Joywork/engine/classes/ExportClass.php
2026-05-22 21:21:54 +03:00

322 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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