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