Joywork/engine/classes/ExportClass.php

322 lines
12 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?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;
}
}
?>