Untitled
unknown
plain_text
2 years ago
12 kB
7
Indexable
public function searchNewV2($params)
{
// xử lý lấy liệu trang trước đó
if (!empty($this->ids_before) && $this->type == 'back') {
$timeRange = $this->formatDateRange($params['daterange'], 59);
$ids = array_map('intval', explode(',',$this->ids_before));
$queryMain = Cdr::find()->select('id,uuid,msisdn,branch_id,queue_id,sk_group_id,user_id,department_id,call_length,answer_state,start_timestamp,answer_timestamp,end_timestamp,ring_timestamp,updated_at,answer_length,created_at,customer_state,confirm_result,campaign_id,recording_path,hangup_actor,hold_time,talk_time,ring_time,extension,customer_phone, call_direction, number_service, client_id, extension_client, ivr_time, queue_time, wrap_time,agent_recieve,status_transfer,call_type, agent_team_id, from_agent_transfer, press_syntax_timestamp, press_dtmf_transfer_timestamp, dtmf_transfer_syntax,start_cdr_timestamp,holded,status,branch_timestamp');
$queryMain->andFilterWhere(['>=', 'created_at', $timeRange['start']])
->andFilterWhere(['<=', 'created_at', $timeRange['end']])
->andFilterWhere(['IN', 'id', $ids])
->orderBy(['start_cdr_timestamp' => SORT_DESC]);
//->orderBy(['created_at' => SORT_DESC, 'id' => SORT_DESC]);
//->orderBy(['created_at' => SORT_DESC]);
$data = $queryMain->all();
return [
'ids' => $ids,
'data' => $data,
'total' => 0
];
}
// Lấy dữ liệu trang tiếp theo
$query = Cdr::find();
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere(['>=', 'created_at', $this->createTimeStart])
->andFilterWhere(['<=', 'created_at', $this->createTimeEnd + 59]);
// Giới hạn điều kiện tìm kiếm đầu số ban đầu
$user = Yii::$app->user->identity;
$hotline = HotlineHelper::getPhoneLine($user, HotlineNumber::HOTLINE_KIND);
$hotlineIdStr = HotlineHelper::prepareIdString($hotline);
$extensionHotlineStr = '';
if (empty($this->listHotline) && $this->call_direction !== 'local' && !empty($hotlineIdStr)) {
$query->andWhere("hotline_id IN ($hotlineIdStr)");
//kiem tra pham vi khi ext hotline khong duoc truyen
if (Yii::$app->user->canSite('search_all_ext_hotline', Yii::$app->params["siteId"])) {
$arrId = [];
$arrIdExtHotline = ExtensionHotline::find()->select('id')->where("hotline_id IN ($hotlineIdStr)")->all();
foreach ($arrIdExtHotline as $extHotline) {
$arrId[] = $extHotline->id;
}
$extensionHotlineStr = implode(',', $arrId);
} else {
$tmp = [];
$ext = HotlineHelper::getAllExtensionByHotline($user, [], explode(',', $hotlineIdStr));
foreach ($ext as $i) {
$tmp[] = $i['id'];
}
$extensionHotlineStr = implode(',', $tmp);
}
} else {
if (!empty($this->listHotline)) {
$query->andWhere("hotline_id IN ($this->listHotline)");
//kiem tra pham vi khi ext hotline khong duoc truyen
if (Yii::$app->user->canSite('search_all_ext_hotline', Yii::$app->params["siteId"])) {
$arrId = [];
$arrIdExtHotline = ExtensionHotline::find()->select('id')->where("hotline_id IN ($this->listHotline)")->all();
foreach ($arrIdExtHotline as $extHotline) {
$arrId[] = $extHotline->id;
}
$extensionHotlineStr = implode(',', $arrId);
} else {
$tmp = [];
$ext = HotlineHelper::getAllExtensionByHotline($user, [], explode(',', $this->listHotline));
foreach ($ext as $i) {
$tmp[] = $i['id'];
}
$extensionHotlineStr = implode(',', $tmp);
}
}
}
if (empty($this->listExtensionHotline) && $this->call_direction !== 'local' && !empty($extensionHotlineStr)) {
$query->andWhere("number_service_id IN ($extensionHotlineStr)");
} else {
if (!empty($this->listExtensionHotline)) {
$query->andWhere("number_service_id IN ($this->listExtensionHotline)");
}
}
$call_type = $this->call_type;
if ($this->call_type == '0') {
$call_type = [0,7];
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
'uuid' => $this->uuid,
'call_direction' => $this->call_direction,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
'campaign_id' => $this->campaign_id,
'confirm_result' => $this->confirm_result,
'user_id' => $this->user_id,
'hotline_id' => $this->hotline_id,
'number_service_id' => $this->number_service_id,
'call_type' => $call_type,
'status' => $this->status
]);
if ($this->isLoiHeThong) {
$query->andFilterWhere(['OR',['customer_state' => $this->customer_state], ['OR', 'customer_state IS NULL']]);
} else {
$query->andFilterWhere(['customer_state' => $this->customer_state]);
}
$query->andFilterWhere(['msisdn' => $this->msisdn])
->andFilterWhere(['extension' => $this->extension]);
if (!empty($this->customer_phone)) {
$query->andFilterWhere(['customer_phone' => trim($this->customer_phone)]);
}
if(isset($this->searchDialNumbers) && count($this->searchDialNumbers) > 0){
$query->andFilterWhere(['IN', 'dial_number', $this->searchDialNumbers]);
}
if(!empty($this->searchUsers)){
//$query->andFilterWhere(['IN', 'user_id', $this->searchUsers]);
$query->andFilterWhere(['user_id' => $this->searchUsers]);
}
if (!empty($this->branch_ids)) {
$query->andWhere("branch_id IN ($this->branch_ids)");
}
if(isset($this->searchDepartments) && count($this->searchDepartments) > 0){
$query->andFilterWhere(['IN', 'department_id', $this->searchDepartments]);
}
if ($this->isDial) {
$query->andFilterWhere(
['not like','answer_state','hangup']);
}
if (!empty($this->arrTimeCall)) {
$query->andFilterWhere(['between', 'talk_time', $this->arrTimeCall[0], $this->arrTimeCall[1]]);
}
if (!empty($this->arrTimeHold)) {
$query->andFilterWhere(['between', 'hold_time', $this->arrTimeHold[0], $this->arrTimeHold[1]]);
}
// tìm kiếm mới
$total = 0;
$is_new = @$params['is_new'];
if ($is_new >= 1) { // tải mới thì mới đếm số bản ghi
$queryCount = clone $query;
$total = $queryCount->count(); // đếm tổng số bản ghi tìm kiếm
if ($total <= 0) {
return false;
}
}
if (!empty($this->type) && !empty($this->last_time) && !empty($this->last_id)) {
if ($this->type == 'next') {
$query->andFilterWhere(['NOT IN', 'id', explode(',',$this->last_id )]);
//$query->andFilterWhere(['<', 'id', (int) $this->last_id]);
//$query->orderBy(['id' => SORT_DESC]);
//$query->andFilterWhere(['<', 'start_cdr_timestamp', $this->last_time]);
//$query->orderBy(['start_cdr_timestamp' => SORT_DESC]);
$query->andFilterWhere(['<=', 'created_at', $this->last_time]);
//$query->orderBy(['created_at' => SORT_DESC, 'id' => SORT_DESC]);
$query->orderBy(['created_at' => SORT_DESC]);
} elseif ($this->type == 'back') {
//$query->andFilterWhere(['>', 'id', (int) $this->last_id]);
//$query->orderBy(['id' => SORT_ASC]);
//$query->andFilterWhere(['>', 'start_cdr_timestamp', $this->last_time]);
//$query->orderBy(['start_cdr_timestamp' => SORT_ASC]);
//$query->andFilterWhere(['>', 'created_at', $this->last_time]);
//$query->orderBy(['created_at' => SORT_ASC, 'id' => SORT_DESC]);
}
} else {
//$query->orderBy(['id' => SORT_DESC]);
//$query->orderBy(['start_cdr_timestamp' => SORT_DESC]);
//$query->orderBy(['created_at' => SORT_DESC, 'id' => SORT_DESC]);
$query->orderBy(['created_at' => SORT_DESC]);
}
// xử lý lấy dữ liệu được phân trang , mặc định là 50
$query->limit($this->limitHistoryCall);
$data = $query->select('id')->asArray()->all();
if (!empty($data)) {
$ids = ArrayHelper::getColumn($data, 'id', true, 'int');
$queryMain = Cdr::find()->select('cdr.id,uuid,msisdn,branch_id,queue_id,sk_group_id,user_id,call_length,department_id,answer_state,start_timestamp,answer_timestamp,end_timestamp,ring_timestamp,cdr.updated_at,answer_length,cdr.created_at,customer_state,confirm_result,campaign_id,recording_path,hangup_actor,hold_time,talk_time,ring_time,extension,customer_phone, call_direction, number_service, client_id, extension_client, ivr_time, queue_time, wrap_time,agent_recieve,status_transfer,call_type, agent_team_id, from_agent_transfer, press_syntax_timestamp, press_dtmf_transfer_timestamp, dtmf_transfer_syntax,start_cdr_timestamp,holded,cdr.status,branch_timestamp,hotline_id')
->andFilterWhere(['>=', 'cdr.created_at', $this->createTimeStart])
->andFilterWhere(['<=', 'cdr.created_at', $this->createTimeEnd + 59])
->andFilterWhere(['IN', 'cdr.id', $ids]);
if (!empty($this->type) && !empty($this->last_id)) {
if ($this->type == 'next') {
//$queryMain->orderBy(['created_at' => SORT_DESC, 'id' => SORT_DESC]);
//$query->orderBy(['start_cdr_timestamp' => SORT_DESC]);
} elseif ($this->type == 'back') {
//$queryMain->orderBy(['created_at' => SORT_ASC, 'id' => SORT_ASC]);
}
} else {
//$query->orderBy(['start_cdr_timestamp' => SORT_DESC]);
//$queryMain->orderBy(['created_at' => SORT_DESC, 'id' => SORT_DESC]);
}
$queryMain->orderBy(['start_cdr_timestamp' => SORT_DESC]);
//$queryMain->orderBy(['created_at' => SORT_DESC, 'id' => SORT_DESC]);
//print_r($queryMain->createCommand()->getRawSql());die;
$data = $queryMain->all();
return [
'ids' => $ids,
'data' => $data,
'total' => $total
];
}
return false;
}Editor is loading...