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;
}
}