322 lines
12 KiB
PHP
322 lines
12 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
class ExportClass{
|
|||
|
|
private $db = null;
|
|||
|
|
private $user_id = 0;
|
|||
|
|
private $agency_id = 0;
|
|||
|
|
|
|||
|
|
public function __construct(){
|
|||
|
|
$pdo = new MysqlPdo(hst, ndb, user, pass);
|
|||
|
|
$pdo->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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
?>
|