db = $db; } else { $pdo = new MysqlPdo(hst, ndb, user, pass); $sql = "SET NAMES 'utf8'"; $pdo->query($sql); $this->db = $pdo; } $this->set_agency_id($agency_id); } public function set_user_id($user_id){ $this->user_id = $user_id; } public function set_agency_id($agency_id){ $this->agency_id = $agency_id; } public function set_page($page){ $this->page = $page; } public function getAllUserAgency($all = true, $user_id = null){ $usersIds = array(); if($this->agency_id > 0){ $agency_id = (int)$this->agency_id; if($user_id > 0) $agency_id = $user_id; $sql_u = "SELECT * FROM users WHERE id in (select id from users where id=$agency_id or id_manager=$agency_id or id_manager in (select id from users where id_manager=$agency_id or id_manager in (select id from users where id_manager=$agency_id)))"; if($all === false){ $sql_u .= ' AND blocked = 0'; } $q_u = $this->db->query($sql_u); while($r_u = $this->db->fetch_assoc($q_u)){ $usersIds[] = (int)$r_u['id']; $this->users[$r_u['id']] = $r_u; } if($all){ $sql_u = "SELECT * FROM users_delete WHERE user_id in (select user_id from users_delete where user_id=$agency_id or id_manager=$agency_id or id_manager in (select user_id from users_delete where id_manager=$agency_id or id_manager in (select user_id from users_delete where id_manager=$agency_id)))"; $q_u = $this->db->query($sql_u); while($r_u = $this->db->fetch_assoc($q_u)){ $usersIds[] = (int)$r_u['user_id']; $this->users[$r_u['id']] = $r_u; } } } return $usersIds; } /** * */ public function get_sources_connection($filter){ $result = array(); $result['total'] = 0; if($this->agency_id > 0){ $limitSql = ""; $where = ''; if(isset($filter->type) && !empty($filter->type)){ $where .= " AND asd.type in (".implode(',', $filter->type).")"; } if(isset($filter->name) && !empty($filter->name)){ $name = trim($filter->name); $where .= " AND (aso.source like '%{$name}%' || asd.tag like '%{$name}%' || asd.domain like '%{$name}%')"; } $sql_total = "SELECT COUNT(*) as total FROM advertising_sources_domain as asd LEFT JOIN advertising_sources as aso ON asd.adv_id=aso.id WHERE agency_id = {$this->agency_id} {$where}"; $q_total = $this->db->query($sql_total); $r_total = $this->db->fetch_row($q_total); if($r_total[0] > 0) $result['total'] = (int)$r_total[0]; if($this->page > 0){ $limitSql = ' limit '.($this->page-1)*$this->limit.', '.$this->limit; } $sources_ids = []; $activites = []; $sql = "SELECT asd.id, type, domain, tag, asd.adv_id, aso.source, asw.who_work FROM advertising_sources_domain as asd LEFT JOIN advertising_sources as aso ON asd.adv_id=aso.id LEFT JOIN advertising_sources_who_work as asw ON asw.adv_id=aso.id WHERE agency_id = {$this->agency_id} {$where} ORDER BY id DESC {$limitSql}"; // echo $sql; $q = $this->db->query($sql); while($r = $this->db->fetch_assoc($q)){ $sources_ids[] = $r['adv_id']; $type_name = ''; switch ($r['type']){ case 0: { $type_name = $r['tag'].' / GCK или KnowHow'; break; } case 1: { $type_name = $r['domain'].' / Pixel'; break; } case 2: { $type_name = $r['domain'].' / Creatium'; break; } case 3: { $type_name = $r['domain'].' / Creatium2'; break; } case 4: { $type_name = $r['domain'].' / Leadback'; break; } case 5: { $type_name = $r['domain'].' / Marqviz'; break; } } $r['type_name'] = $type_name; $r['tags'] = []; $r['user'] = ''; $r['name_funnel'] = null; $r['name_funnel_req'] = null; $r['funnel_id'] = null; $r['funnel_id_req'] = null; $sources[] = $r; } if(!empty($sources_ids)){ $sources_ids = array_unique($sources_ids); $sql_activites = "SELECT asa.source_id, a.name, asa.activities_id FROM `advertising_sources_activities` as asa LEFT JOIN activities AS a ON asa.activities_id = a.id WHERE source_id in (".implode(",", $sources_ids).") AND agency_id = {$this->agency_id}"; //echo $sql_activites; $q_activites = $this->db->query($sql_activites); while($r_activites = $this->db->fetch_assoc($q_activites)){ if(!isset($activites[$r_activites['source_id']])) $activites[$r_activites['source_id']] = []; $activites[$r_activites['source_id']][] = $r_activites; } $usersIds = $this->getAllUserAgency(); $funnels = array(); $sql_funnels = "SELECT *, (SELECT name FROM funnel as f WHERE asf.funnel_id = f.id) as name_funnel, (SELECT name FROM funnel as f WHERE asf.funnel_id_req = f.id) as name_funnel_req FROM advertising_sources_funnel as asf WHERE source_id in (".implode(",", $sources_ids).")"; $q_funnels = $this->db->query($sql_funnels); while($r_funnel = $this->db->fetch_assoc($q_funnels)){ $funnels[$r_funnel['source_id']] = array('name_funnel'=>$r_funnel['name_funnel'], 'name_funnel_req'=>$r_funnel['name_funnel_req'], 'funnel_id'=>$r_funnel['funnel_id'], 'funnel_id_req'=>$r_funnel['funnel_id_req']); } } if(!empty($sources)){ foreach($sources as $key => $source){ if(isset($activites[$source['adv_id']])){ $sources[$key]['tags'] = $activites[$source['adv_id']]; } if($source['who_work'] > 0 && isset($this->users[$source['who_work']])){ $user = $this->users[$source['who_work']]; $sources[$key]['user'] = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']); } else { $sources[$key]['user'] = "Общие"; } if(isset($funnels[$source['adv_id']])){ if($funnels[$source['adv_id']]['funnel_id'] > 0){ $sources[$key]['name_funnel'] = $funnels[$source['adv_id']]['name_funnel']; $sources[$key]['funnel_id'] = $funnels[$source['adv_id']]['funnel_id']; } if($funnels[$source['adv_id']]['funnel_id_req'] > 0){ $sources[$key]['name_funnel_req'] = $funnels[$source['adv_id']]['name_funnel_req']; $sources[$key]['funnel_id_req'] = $funnels[$source['adv_id']]['funnel_id_req']; } } } } } $result['allPages'] = ceil($result['total']/$this->limit); $result['list'] = isset($sources) ? $sources : []; return $result; } /** * Список источников агентства */ public function get_all_sources(){ $sources = array(); if($this->agency_id > 0){ $usersIds = $this->getAllUserAgency(); $sql_source = "SELECT * FROM `advertising_sources` WHERE (user_id in (".implode(',', $usersIds).") or manager_id in (".implode(',', $usersIds)."))"; $q_source = $this->db->query($sql_source); while($r_source = $this->db->fetch_assoc($q_source)){ $sources[] = array('code'=> $r_source['id'], 'name'=>$r_source['source']); } } return $sources; } /** * Теги */ public function get_activites(){ $result = array(); if($this->agency_id > 0){ $agencyId = (int)$this->agency_id; $users = $this->getAllUserAgency(); $sql_activites = "SELECT * FROM `activities` WHERE (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))"; $q_aclivites = $this->db->query($sql_activites); while($r_activites = $this->db->fetch_assoc($q_aclivites)){ $result[] = array('code'=>$r_activites['id'], 'name'=>$r_activites['name']); } } return $result; } /** * Ответственные список */ public function get_users_list(){ $result = array(); if($this->agency_id > 0 && $this->user_id > 0){ $depClass = new Department; $departments = $depClass->getDepartments(); $usersIds = $this->getAllUserAgency(false, $this->user_id); $users = $this->users; $result[] = array('code'=> $this->user_id, 'name'=> 'Я', 'type'=>'label', 'agency_id'=>$this->agency_id); if($this->user_id != $this->agency_id){ $fio = trim($users[$this->agency_id]['last_name'] . ' ' . $users[$this->agency_id]['first_name'] . ' ' . $users[$this->agency_id]['middle_name'])." (Руководитель агентства)"; $result[] = array('code'=> $this->agency_id, 'name'=> 'Я', 'type'=>'label', 'agency_id'=>$this->agency_id); } $otdels = array(); $agents = array(); foreach($users as $user){ if($user['id'] != $this->user_id){ if($user['id_manager'] == $this->agency_id && $user['manager'] == 1){ $fio = "Отдел ".trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']); if ($user['role_id'] > 0 && isset($departments[$user['role_id']])) { $fio = $departments[$user['role_id']]['dep_name']; } $otdels[] = array('code'=> 'otdel_'.$user['id'], 'name'=> $fio, 'type'=>'group', 'agency_id'=>$this->agency_id, 'id'=>$user['id']); } else if ($user['id_manager'] == $this->agency_id && $user['manager'] == 0){ $fio = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name'])." (Агент)"; $agents[] = array('code'=> $user['id'], 'name'=> $fio, 'type'=>'label', 'agency_id'=>$this->agency_id); } } } foreach($otdels as $otdel){ $result[] = $otdel; $fio = trim($users[$otdel['id']]['last_name'] . ' ' . $users[$otdel['id']]['first_name'] . ' ' . $users[$otdel['id']]['middle_name'])." (Менеджер)";; $result[] = array('code'=> $otdel['id'], 'name'=> $fio, 'type'=>'label', 'agency_id'=>$this->agency_id); foreach($users as $user){ if($user['id_manager'] == $otdel['id']){ if($user['manager'] == 1){ $fio = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']); $result[] = array('code'=> $otdel['id'], 'name'=> $fio, 'type'=>'label', 'agency_id'=>$this->agency_id); foreach($users as $user2){ if($user2['id_manager'] == $user['id']){ $fio2 = trim($user2['last_name'] . ' ' . $user2['first_name'] . ' ' . $user2['middle_name'])." (Агент)"; $result[] = array('code'=> $user2['id'], 'name'=> $fio2, 'type'=>'label', 'agency_id'=>$this->agency_id); } } } else { $fio = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name'])." (Агент)"; $result[] = array('code'=> $user['id'], 'name'=> $fio, 'type'=>'label', 'agency_id'=>$this->agency_id); } } } } if(!empty($agents)){ $result[] = array('code'=> 'agency'.$this->agency_id, 'name'=> "Агенты", 'type'=>'group', 'agency_id'=>$this->agency_id); foreach($agents as $agent){ $result[] = $agent; } } } return $result; } /** * Для получения связи по источнику * * @param int $source_id * @return array */ public function get_data_source($source_id){ $result = array(); if($this->agency_id > 0){ $activites = []; $sql_act = "SELECT * FROM advertising_sources_activities WHERE source_id = {$source_id}"; $q_act = $this->db->query($sql_act); while($r_act = $this->db->fetch_assoc($q_act)){ $activites[] = (int)$r_act['activities_id']; } $result['activites'] = $activites; $who_work = null; $sql_who_work = "SELECT * FROM advertising_sources_who_work WHERE adv_id = {$source_id}"; $q_who_work = $this->db->query($sql_who_work); if($this->db->num_rows($q_who_work) > 0){ $who_work = (int)$this->db->fetch_assoc($q_who_work)['who_work']; } $result['who_work'] = $who_work; $funnel_id = null; $funnel_id_req = null; $sql_funnels = "SELECT * FROM advertising_sources_funnel WHERE source_id = {$source_id}"; $q_funnels = $this->db->query($sql_funnels); if($this->db->num_rows($q_funnels) > 0){ $r_funnels = $this->db->fetch_assoc($q_funnels); if($r_funnels['funnel_id'] > 0) $funnel_id = (int)$r_funnels['funnel_id']; if($r_funnels['funnel_id_req'] > 0) $funnel_id_req = (int)$r_funnels['funnel_id_req']; } $result['funnel_id'] = $funnel_id; $result['funnel_id_req'] = $funnel_id_req; } return $result; } public function add_tags($item){ $text = ""; $tags = []; $tags_old = []; if($item->source > 0){ $sql = "SELECT * FROM advertising_sources_activities WHERE source_id = {$item->source} AND agency_id = {$this->agency_id}"; $q = $this->db->query($sql); while($r = $this->db->fetch_assoc($q)){ $tags_old[] = (int)$r['activities_id']; } foreach($item->tags as $tag){ $tags[] = (int)$tag; } if($tags != $tags_old){ $tags_arr = array_merge($tags, $tags_old); $tags_name = array(); $text = "Изменена связь с тегами
"; $new_tags = ""; $old_tags = ""; if(!empty($tags_arr)){ $sql_tag_name = "SELECT * FROM activities WHERE id in (".implode(',', $tags_arr).")"; $q_tag_name = $this->db->query($sql_tag_name); while($r_tag_name = $this->db->fetch_assoc($q_tag_name)){ $tags_name[$r_tag_name['id']] = $r_tag_name['name']; } } $this->db->query("DELETE FROM advertising_sources_activities WHERE source_id = {$item->source} AND agency_id = {$this->agency_id}"); foreach($tags as $tag){ $sql_in = "INSERT INTO advertising_sources_activities (activities_id, source_id, agency_id) VALUES ({$tag}, {$item->source}, {$this->agency_id})"; $this->db->query($sql_in); if($new_tags != ""){ $new_tags .= ", "; } $new_tags .= $tags_name[$tag]; } if(!empty($tags_old)){ foreach($tags_old as $tag){ if($old_tags != "") $old_tags .= ", "; $old_tags .= $tags_name[$tag]; } } $text .= "Старое значение: ".$old_tags."
"; $text .= "Новое значение: ".$new_tags; } } return $text; } public function add_who_work($item){ $text = ""; if($item->source > 0){ $who_work = (int)$item->who_work; $user_ids = []; $user_ids[] = $who_work; $sql = "SELECT * FROM advertising_sources_who_work WHERE adv_id = {$item->source}"; $q = $this->db->query($sql); if($this->db->num_rows($q) == 0 && (int)$item->who_work > 0){ $sql_in = "INSERT INTO advertising_sources_who_work (adv_id, who_work) VALUES ({$item->source}, {$item->who_work})"; $this->db->query($sql_in); $sql_user = "SELECT * FROM users WHERE id = {$who_work}"; $q_user = $this->db->query($sql_user); $user = $this->db->fetch_assoc($q_user); $fio = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']); $text = "Добавлена связь с сотрудником ".$fio; } else { $r = $this->db->fetch_assoc($q); if($r['who_work'] != $who_work){ $user_ids[] = (int)$r['who_work']; $text .= "Изменена связь с сотрудником"; $sql_user = "SELECT * FROM users WHERE id in (".implode(',', $user_ids).")"; $q_user = $this->db->query($sql_user); while($r_user = $this->db->fetch_assoc($q_user)){ if($r_user['id'] == $who_work){ $text .= "
Новое значение: ".trim($r_user['last_name'] . ' ' . $r_user['first_name'] . ' ' . $r_user['middle_name']); } else if($r_user['id'] == $r['who_work']){ $text .= "
Старое значение: ".trim($r_user['last_name'] . ' ' . $r_user['first_name'] . ' ' . $r_user['middle_name']); } } if($who_work > 0) $this->db->query("UPDATE advertising_sources_who_work SET who_work = {$who_work} WHERE id = {$r['id']}"); else $this->db->query("DELETE FROM advertising_sources_who_work WHERE id = {$r['id']}"); } } } return $text; } public function add_funnel($item){ $text = ""; if($item->source > 0){ if(empty($item->funnel_id) && empty($item->funnel_id_req)) { /** */ } else { $sql = "SELECT * FROM advertising_sources_funnel WHERE source_id = {$item->source}"; $q = $this->db->query($sql); $funnel_id = (int)$item->funnel_id; $funnel_id_req = (int)$item->funnel_id_req; if($this->db->num_rows($q) == 0){ $sql_in = "INSERT INTO advertising_sources_funnel (source_id, funnel_id, funnel_id_req) VALUES ({$item->source}, {$funnel_id}, {$funnel_id_req})"; $this->db->query($sql_in); $text = "Добавлена связь с воронкой: "; $funnels = array(); if($funnel_id > 0 || $funnel_id_req > 0){ $sql_funnel = "SELECT * FROM funnnel WHERE id in ($funnel_id, $funnel_id_req)"; $q_funnel = $this->db->query($sql_funnel); while($r_funnel = $this->db->fetch_assoc($q_funnel)){ $funnels[$r_funnel['id']] = $r_funnel['name']; } /*if($funnel_id > 0){ $text .= "
".$funnels[$funnel_id]. " для клиентов"; }*/ if($funnel_id_req > 0){ $text .= "
".$funnels[$funnel_id_req]. " для заявок"; } } } else { $r = $this->db->fetch_assoc($q); if((int)$r['funnel_id'] != $funnel_id || (int)$r['funnel_id_req'] != $funnel_id_req){ $funnels = array(); $sql_funnel = "SELECT * FROM funnnel WHERE id in ($funnel_id, $funnel_id_req, $r[funnel_id], $r[funnel_id_req])"; $q_funnel = $this->db->query($sql_funnel); while($r_funnel = $this->db->fetch_assoc($q_funnel)){ $funnels[$r_funnel['id']] = $r_funnel['neme']; } $sql_up = "UPDATE advertising_sources_funnel SET funnel_id={$funnel_id}, funnel_id_req={$funnel_id_req} WHERE id = {$r['id']}"; $this->db->query($sql_up); $text = "Изменена связь с воронкой: "; /* if((int)$r['funnel_id'] != $funnel_id){ $text .= "
Старое значение для клиентов: "; $text .= "
".$funnels[$r['funnel_id']]; $text .= "
Новое значение для клиентов: "; $text .= "
".$funnels[$funnel_id]; }*/ if((int)$r['funnel_id_req'] != $funnel_id_req){ $text .= "
Старое значение для заявок: "; $text .= "
".$funnels[$r['funnel_id_req']]; $text .= "
Новое значение для заявок: "; $text .= "
".$funnels[$funnel_id_req]; } } } } } return $text; } public function save($item){ $errors = array(); $name_field = 'домена'; $result = array(); $event = "add"; if($this->agency_id > 0 && $this->user_id > 0){ $type = (int)$item->type; $sql = "SELECT * FROM advertising_sources_domain WHERE adv_id = {$item->source} AND type = {$type} AND agency_id = {$this->agency_id}"; if(isset($item->id)){ $sql .= " AND id != {$item->id}"; } //echo $sql; $q = $this->db->query($sql); if($this->db->num_rows($q) > 0){ $errors['source'] = "Для этого иточника уже настроена связь"; } $field = 'domain'; if($item->type_source_conect == 'tag'){ $field = 'tag'; $name_field = 'тега'; } $sql = "SELECT * FROM advertising_sources_domain WHERE $field = '{$item->name}' AND type = {$type} AND agency_id = {$this->agency_id}"; if(isset($item->id)){ $sql .= " AND id != {$item->id}"; } //echo $sql; $q = $this->db->query($sql); if($this->db->num_rows($q) > 0){ $errors['name'] = "Для этого {$name_field} уже настроена связь"; } if(empty($errors)){ if($item->id > 0){ $event = "update"; $desc = ""; $sqlUp = "SELECT * FROM advertising_sources_domain WHERE id = {$item->id}"; $qUp = $this->db->query($sqlUp); $rUp = $this->db->fetch_assoc($qUp); if($rUp['type'] == 0){ if($rUp['tag'] != $item->name){ $desc = "Изменен тег
"; $desc .= "Старое значение: ".$rUp['tag']."
"; $desc .= "Новое значение: ".$item->name."
"; } if(!$this->db->query("UPDATE advertising_sources_domain SET tag = '{$item->name}' WHERE id={$item->id}")){ $errors[] = $this->db->error(); } } else { if($rUp['domain'] != $item->name){ $desc = "Изменен домен
"; $desc .= "Старое значение: ".$rUp['domain']."
"; $desc .= "Новое значение: ".$item->name."
"; } if(!$this->db->query("UPDATE advertising_sources_domain SET domain = '{$item->name}' WHERE id={$item->id}")){ $errors[] = $this->db->error(); } } } else { $desc = ''; $sqlIn = "INSERT INTO advertising_sources_domain ($field, adv_id, type, agency_id) VALUES ('{$item->name}', {$item->source}, {$type}, {$this->agency_id})"; if(!$this->db->query($sqlIn)){ $errors['sql'] = $this->db->error(); } else { $desc .= "Добавлена связь для источника ID ".$item->source." ".$name_field." ". $item->name; } } $text = $this->add_tags($item); if(!empty($text)) { if($desc != '') $desc .= "
"; $desc .= $text; } $text2 = $this->add_who_work($item); if(!empty($text2)) { if($desc != '') $desc .= "
"; $desc .= $text2; } $text3 = $this->add_funnel($item); if(!empty($text3)) { if($desc != '') $desc .= "
"; $desc .= $text3; } $sql_log = "INSERT INTO advertising_sources_connection_log(`user_id`, `agency_id`, `event`, `source_id`, `description`) VALUES ({$this->user_id}, {$this->agency_id}, '{$event}', {$item->source}, '{$desc}')"; if(!$this->db->query($sql_log)){ $errors[] = $this->db->error(); } } } if(!empty($errors)){ return array('result'=>'error', 'errors'=>$errors); } return array('result'=>'success'); } public function delete_source_connect($delete_id){ $errors = array(); if($this->agency_id > 0 && $this->user_id > 0){ $sql = "SELECT asd.id, type, domain, tag, asd.adv_id, aso.source FROM advertising_sources_domain as asd LEFT JOIN advertising_sources as aso ON asd.adv_id=aso.id WHERE asd.id = {$delete_id}"; $q = $this->db->query($sql); $connect = $this->db->fetch_assoc($q); if(!isset($connect['id'])){ $errors[] = "Связь не найдена"; } else { $source_id = (int)$connect['adv_id']; $desc = "Удалена связь для источника ID ".$source_id." ".$connect['source']; $this->db->query("DELETE FROM advertising_sources_domain WHERE id = {$delete_id}"); //Сборка мусора try{ $sql_d = "SELECT * FROM advertising_sources_domain WHERE adv_id = {$source_id}"; $q_d = $this->db->query($sql_d); if($this->db->num_rows($q_d) == 0){ $sql_activites = "SELECT asa.id, asa.source_id, a.name FROM `advertising_sources_activities` as asa LEFT JOIN activities AS a ON asa.activities_id = a.id WHERE asa.source_id = {$source_id} AND asa.agency_id = {$this->agency_id}"; //echo $sql_activites; $q_activites = $this->db->query($sql_activites); if($this->db->num_rows($q_activites) > 0){ $act = array(); while($r_activites = $this->db->fetch_assoc($q_activites)){ $act[] = $r_activites['name']; } if(!empty($act)){ $desc .= "
Удалена привязка источника к тегам: ".implode(', ', $act); } } if(!$this->db->query("DELETE FROM advertising_sources_activities WHERE source_id = {$source_id}")){ $errors[] = $this->db->error(); } } $sql_w = "SELECT * FROM advertising_sources_who_work WHERE adv_id = {$source_id}"; $q_w = $this->db->query($sql_w); if($this->db->num_rows($q_w) > 0){ $r_w = $this->db->fetch_assoc($q_w); $sql_u = "SELECT * FROM users WHERE id = {$r_w['id']}"; $q_u = $this->db->query($sql_u); $user = $this->db->fetch_assoc($q_u); $fio = ''; if($user['id'] > 0){ $fio = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']); } $desc .= "
Удалена привязка источника к сотруднику ".$fio; if(!$this->db->query("DELETE FROM advertising_sources_who_work WHERE adv_id = {$source_id}")){ $errors[] = $this->db->error(); } } $sql_f = "SELECT *, (SELECT name FROM funnel as f WHERE asf.funnel_id = f.id) as name_funnel, (SELECT name FROM funnel as f WHERE asf.funnel_id_req = f.id) as name_funnel_req FROM advertising_sources_funnel as asf WHERE source_id={$source_id}"; $q_f = $this->db->query($sql_f); if($this->db->num_rows($q_f) > 0){ $r_f = $this->db->fetch_assoc($q_f); /* if(!empty($r_f['name_funnel'])){ $desc .= "
Удалена привязка источника к воронке клиента ".$r_f['name_funnel']; }*/ if(!empty($r_f['name_funnel_req'])){ $desc .= "
Удалена привязка источника к воронке заявки ".$r_f['name_funnel_req']; } if(!$this->db->query("DELETE FROM advertising_sources_funnel WHERE id = {$r_f['id']}")){ $errors[] = $this->db->error(); } } } catch (Exception $e){ $errors[] = $e->getMessage(); } $sql_log = "INSERT INTO advertising_sources_connection_log(`user_id`, `agency_id`, `event`, `source_id`, `description`) VALUES ({$this->user_id}, {$this->agency_id}, 'delete', {$source_id}, '{$desc}')"; if(!$this->db->query($sql_log)){ $errors[] = $this->db->error(); } } } if(!empty($errors)){ return array('result'=>'error', 'errors'=>$errors); } return array('result'=>'success'); } public function get_logs_connection($filter){ $result = array(); $result['total'] = 0; if($this->agency_id > 0){ $logs = array(); $usersIds = $this->getAllUserAgency(); $limitSql = ""; $where = ''; // var_dump($filter); if(isset($filter->date_start) && !empty($filter->date_start)){ $date_start = strtotime(date('d.m.Y 00:00:00', strtotime($filter->date_start))); $where .= " AND UNIX_TIMESTAMP(asl.created_at) >= '{$date_start}'"; } if(isset($filter->date_end) && !empty($filter->date_end)){ $date_end = strtotime(date('d.m.Y 23:59:59', strtotime($filter->date_end))); $where .= " AND UNIX_TIMESTAMP(asl.created_at) <= '{$date_end}'"; } if(isset($filter->event) && !empty($filter->event)){ $where .= " AND asl.event in ('".implode('\',\'', $filter->event)."')"; } if(isset($filter->users) && !empty($filter->users)){ $where .= " AND asl.user_id in (".implode(',', $filter->users).")"; } $sql_total = "SELECT COUNT(*) as total FROM advertising_sources_connection_log as asl WHERE asl.agency_id = {$this->agency_id} {$where}"; $q_total = $this->db->query($sql_total); $r_total = $this->db->fetch_row($q_total); if($r_total[0] > 0) $result['total'] = (int)$r_total[0]; if($this->page > 0){ $limitSql = ' limit '.($this->page-1)*$this->limit.', '.$this->limit; } $sql = "SELECT asl.*, aso.source FROM advertising_sources_connection_log as asl LEFT JOIN advertising_sources as aso ON asl.source_id=aso.id WHERE asl.agency_id = {$this->agency_id} {$where} ORDER BY asl.id DESC {$limitSql}"; // echo $sql; $q = $this->db->query($sql); while($r = $this->db->fetch_assoc($q)){ $arrEvent = array('add'=>'Добавление', 'delete'=>'Удаление', 'update'=>'Изменение'); $r['user'] = ''; $r['create_at'] = date('d.m.y H:i', strtotime($r['created_at'])); $r['event_name'] = $arrEvent[$r['event']]; $r['description'] = trim(trim($r['description']), '
'); if(isset($this->users[$r['user_id']])){ $user = $this->users[$r['user_id']]; $r['user'] = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']); } $logs[] = $r; } } $result['allPages'] = ceil($result['total']/$this->limit); $result['list'] = isset($logs) ? $logs : []; return $result; } }