query("SET NAMES 'utf8'"); $this->db = $pdo; } /** * Сохранение настроек */ public function saveSettingExport($data){ $type = $data->type; $user_id = (int)$data->user_id; if($user_id > 0) $this->user_id = $user_id; $field_fixes = json_encode($data->field_fixes, JSON_UNESCAPED_UNICODE); $field_castom = json_encode($data->field_castom, JSON_UNESCAPED_UNICODE); if(isset($data->field_funnels)){ $funnels = array(); foreach($data->field_funnels as $key => $ff){ $funnels[$key]['is_active'] = $ff->is_active; foreach($ff->steps as $keys => $ffs){ $funnels[$key]['steps'][$keys]['is_active'] = $ffs->is_active; foreach($ffs->fields as $keyf => $fff){ $funnels[$key]['steps'][$keys]['fields'][$keyf]['is_active'] = $fff->is_active; } } } //var_dump($funnels); $field_funnels = json_encode($funnels, JSON_UNESCAPED_UNICODE); } $raportId = 0; if(isset($data->raport_id)){ $raportId = (int)$data->raport_id; } $is_raport = 0; if(isset($data->is_raport)){ $is_raport = (int)$data->is_raport; } $title_raport = ''; if(isset($data->title_raport)){ $title_raport = $data->title_raport; } if($this->user_id == 0){ die('Неверно определен пользователь'); } if($is_raport == 1 && !empty($title_raport)){ if($raportId > 0){ $sql_raport_up = "UPDATE raports set name = '{$title_raport}' WHERE id = {$raportId}"; $this->db->query($sql_raport_up); } else { $sql_raport_in = "INSERT INTO raports (name) VALUES ('{$title_raport}')"; $this->db->query($sql_raport_in); $raportId = $this->db->insert_id(); } } $sql = "SELECT id FROM export_settings WHERE user_id = {$this->user_id} AND type = '{$type}' AND raport_id = {$raportId}"; $q = $this->db->query($sql); if($this->db->num_rows($q) > 0){ $r = $this->db->fetch_assoc($q); $sql_up = "UPDATE export_settings SET fields_fixes = '{$field_fixes}', fields_castom = '{$field_castom}' WHERE id = {$r['id']}"; if(isset($field_funnels)){ $sql_up = "UPDATE export_settings SET fields_fixes = '{$field_fixes}', fields_castom = '{$field_castom}', fields_funnels = '{$field_funnels}' WHERE id = {$r['id']}"; } //echo $sql_up; $this->db->query($sql_up); } else { $sql_in = "INSERT INTO export_settings (user_id, fields_fixes, fields_castom, `type`, raport_id) VALUES ({$this->user_id}, '{$field_fixes}', '{$field_castom}', '{$type}', {$raportId})"; if(isset($field_funnels)){ $sql_up = "INSERT INTO export_settings (user_id, fields_fixes, fields_castom, fields_funnels, `type`, raport_id) VALUES ({$this->user_id}, '{$field_fixes}', '{$field_castom}', '{$field_funnels}', '{$type}', {$raportId})"; } $this->db->query($sql_in); } } /** * */ public function getSettingsExport($data){ $result = array(); $result['fields_fixes'] = array(); $result['fields_castom'] = array(); $result['fields_funnels'] = array(); $type = $data->type; $user_id = (int)$data->user_id; $raportId = 0; if(isset($data->raport_id)){ $raportId = (int)$data->raport_id; } if($user_id > 0) $this->user_id = $user_id; if($this->user_id == 0){ $result['error'] = 'Неверно определен пользователь'; return $result; } $sql = "SELECT * FROM export_settings WHERE user_id = {$this->user_id} AND type = '{$type}' AND raport_id = {$raportId}"; $q = $this->db->query($sql); $r = $this->db->fetch_assoc($q); if(!empty($r['fields_fixes'])){ $result['fields_fixes'] = json_decode($r['fields_fixes'], true); } if(!empty($r['fields_castom'])){ $result['fields_castom'] = json_decode($r['fields_castom'], true); } if(!empty($r['fields_funnels'])){ $result['fields_funnels'] = json_decode($r['fields_funnels'], true); } $result['title_raport'] = ''; if($raportId > 0){ $sql_r = "SELECT * FROM raports WHERE id = {$raportId}"; $q_r = $this->db->query($sql_r); $raport = $this->db->fetch_assoc($q_r); if(isset($raport['name'])){ $result['title_raport'] = $raport['name']; } } return $result; } /** * */ public function get_raports($data){ $type = $data->type; $user_id = (int)$data->user_id; if($user_id > 0){ $this->user_id = $user_id; } if($this->user_id == 0){ $result['error'] = 'Неверно определен пользователь'; return $result; } $result['list_raports'] = array(); $raportIds = []; $sql="SELECT * FROM export_settings WHERE user_id = {$this->user_id} AND type='{$type}'"; $q=$this->db->query($sql); while($r = $this->db->fetch_assoc($q)){ if($r['raport_id'] > 0){ $raportIds[] = $r['raport_id']; } } if(!empty($raportIds)){ $sql="SELECT * FROM raports WHERE id in (".implode(',',$raportIds).")"; $q=$this->db->query($sql); while($r = $this->db->fetch_assoc($q)){ $result['list_raports'][] = array('code'=>$r['id'],'name'=>$r['name']); $result['list'][$r['id']] = $r; } } return $result; } /** * Получение воронок */ public function get_funnels_steps($data){ if($this->agency_id == 0){ $result['error'] = 'Неверно определено агентство'; return $result; } $type = $data->type; $sql_funnel = "select id, name from funnel WHERE agency_id = {$this->agency_id} AND deleted = 0"; if($type == 'req'){ $sql_funnel .= ' AND is_req = 1'; } else if ($type == 'client'){ $sql_funnel .= ' AND is_client = 1'; } $funnelsDBO = $this->db->query($sql_funnel); $funnels = array(); $funnelsIds = array(); while ($row = $this->db->fetch_assoc($funnelsDBO)) { $row['steps'] = array(); $row['is_active'] = 0; $funnelsIds[] = $row['id']; $funnels[$row['id']] = $row; } if(!empty($funnelsIds)){ $funnelSteps = $this->db->query("select id, name, pole_end_list, funnel_id from funnel_steps WHERE funnel_id in (".implode(',',$funnelsIds).") AND deleted = 0 order by main desc, branch"); while ($row2 = $this->db->fetch_assoc($funnelSteps)) { $row2['is_active'] = 0; $row2['fields'] = json_decode(htmlspecialchars_decode($row2['pole_end_list']), true); foreach($row2['fields'] as $key => $field){ $row2['fields'][$key]['is_active'] = 0; } unset($row2['pole_end_list']); $funnels[$row2['funnel_id']]['steps']['step'.$row2['id']] = $row2; } } return $funnels; } /** * установка id агентства */ public function set_agency($agency_id) { $this->agency_id = $agency_id; } /** * Все пользователи агентства */ public function get_all_users() { $users = array(); if((int)$this->agency_id == 0){ die('Неверно определено агентство'); } $agency_id = $this->agency_id; $list = array(); $usersIds = array(); $usersIds[] = $agency_id; $sql_users = "SELECT id 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)))"; $q_users = $this->db->query($sql_users); while($r_users = $this->db->fetch_assoc($q_users)){ $usersIds[] = (int)$r_users['id']; } $sql_u = "SELECT id, last_name, first_name, middle_name FROM users WHERE id in (".implode(',',$usersIds).")"; $q_u = $this->db->query($sql_u); while($row = $this->db->fetch_assoc($q_u)){ $list[$row['id']] = $row; } $users = $list; return $users; } public function get_columns_title(){ $namesTitle = array( 'id'=>'ID Заявки', 'date'=>'Дата', 'responsible' => 'Ответственный', 'client' => 'Клиент', 'phone' => 'Телефон клиента', 'email' => 'E-mail клиента', 'name_req' => 'Название заявки', 'type_req' => 'Тип заявки', 'contract_type' => 'Тип договора', 'contract_number' => 'Номер договора', 'contract_date' => 'Дата договора', 'nazv_obj' => 'Название объекта', 'address_obj' => 'Адрес объекта', 'price_obj' => 'Цена объекта', 'funnel' => 'Воронка', 'tag' => 'Теги', 'step' => 'Этап', 'desc' => 'Описание', 'events' => 'Последние задачи', 'events_call' => 'Касания/Звонки', 'source' => 'Источник', 'partner' => 'Партнер', 'denial' => 'Причина закрытия', 'denial_comm' => 'Комментарий введенный при закрытии', 'summa' => 'Сумма сделки', 'date_close' => 'Дата закрытия' ); return $namesTitle; } public function deleteRaport($data){ $raport_id = 0; if(isset($data->raport_id)){ $raport_id = (int)$data->raport_id; } echo $raport_id; if($raport_id > 0){ $sql_del = "DELETE FROM export_settings WHERE raport_id={$raport_id}"; $sql_del2 = "DELETE FROM raports WHERE id = {$raport_id}"; echo $sql_del; $this->db->query($sql_del); $this->db->query($sql_del2); } } public function get_write_file($data){ $user_id = (int)$data->user_id; $date = date('d.m.Y'); $name_file = '/server/excel/'.$user_id.'/raport_'.$date.'.xlsx'; $name_file_write = $_SERVER['DOCUMENT_ROOT'] . '/' . '/server/excel/'.$user_id.'/raport_write_'.$date.'.json'; $json_str = file_get_contents($name_file_write); $json = json_decode($json_str, true); $json['file'] = $name_file; return $json; } public function close(){ $this->db = null; } } ?>