Joywork/ajax/getCharts.php

1648 lines
73 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<?php
if(isset($_POST['dashboard']))
{
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$cl = new Clients();
$usersArr = json_decode($_POST['responsible'], true);
$_SESSION['filter_emp'] = $_POST['responsible'];
$bd_usl_managers = '';
$bd_usl = '';
$bd_usl_req = '';
$bd_usl_cl = '';
$bd_usl_date = '';
$p_sql = '';
$arrIdUser = array();
$post = clearInputData($_POST);
$usersPlan = array();
/* if(empty($usersArr)){
$usersArr = $_POST['user_id'];
}*/
$usersId = $cl -> getUsersFilter($usersArr, $_POST['user_id'], $_POST['users_admin']);
$usersPlan = $usersId;
foreach($usersId as $userId){
$arrIdUser[] = "who_work = $userId";
}
$period = 'all';
$whereTasks = "";
$period = $_POST['period'];
$onDate = null;
$offDate = null;
if(isset($_POST['onDate']) && !empty($_POST['onDate'])){
$_SESSION['on_date'] = date('d.m.Y', strtotime($_POST['onDate']));
$onDate = $_POST['onDate'];
}
if(isset($_POST['offDate']) && !empty($_POST['offDate'])){
$_SESSION['off_date'] = date('d.m.Y', strtotime($_POST['offDate']));
$offDate = $_POST['offDate'];
}
$mounthArrray = ["", "Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь" ];
$treplace = array (
"Январь" => "января",
"Февраль" => "февраля",
"Март" => "марта",
"Апрель" => "апреля",
"Май" => "мая",
"Июнь" => "июня",
"Июль" => "июля",
"Август" => "августа",
"Сентябрь" => "сентября",
"Октябрь" => "октября",
"Ноябрь" => "ноября",
"Декабрь" => "декабря");
$dates = getPeriod($period, $onDate, $offDate);
$totalDays = $dates['totalDays'];
$firstDay = date('d', strtotime($dates['dateStart']));
$lastDay = date('d', strtotime($dates['dateEnd']));
$nameMonth = $treplace[$mounthArrray[(int)date('m')]];
$firstNameMonth = $treplace[$mounthArrray[(int)date('m', strtotime($dates['dateStart']))]];
$lastNameMonth = $treplace[$mounthArrray[(int)date('m', strtotime($dates['dateEnd']))]];
$datetime1 = new DateTime($dates['dateStart']);
$datetime2 = new DateTime(date('Y-m-d'));
$difference = $datetime1->diff($datetime2);
$diffDays = $difference->days;
$procentDays = (int)(($diffDays/$totalDays) * 100);
$readPeriod = $dates['readPeriod'];
$months = $dates['months'];
$years = $dates['years'];
$date_between = $dates['between'];
$whereTasks = $dates['whereTasks'];
$monthsyears = $dates['monthsyears'];
$bd_usl_date = ' AND date_add '.$date_between;
if(isset($_POST['charts_type'])){
$typesArr = json_decode(html_entity_decode($_POST['charts_type']), ENT_QUOTES);
if(!empty($typesArr)){
$typeArr = array();
foreach($typesArr as $typeCl){
$typeArr[] = "work_type like '%&quot;{$typeCl}&quot;%'";
}
$bd_usl .= " AND (".implode(" OR ",$typeArr).")";
}
$_SESSION['filter_client_type'] = $_POST['charts_type'];
} else {
unset($_SESSION['filter_client_type']);
}
if(isset($_POST['charts_activities']) && !empty($_POST['charts_activities']) && $_POST['charts_activities'] != 'null'){
$activitiesArr = json_decode(html_entity_decode($_POST['charts_activities']), ENT_QUOTES);
$activitieArr = array();
foreach($activitiesArr as $activitieCl){
$activitieArr[] = "`activities` like '%&quot;{$activitieCl}&quot;%'";
}
if(!empty($activitieArr)){
$bd_usl_req .= " AND (".implode(" OR ",$activitieArr).")";
}
$_SESSION['filter_activities'] = $_POST['charts_activities'];
} else {
unset($_SESSION['filter_activities']);
}
if (isset($_POST['charts_activities']) && !empty($_POST['charts_activities']) && $_POST['charts_activities'] != 'null') {
$activitiesArr = json_decode(html_entity_decode($_POST['charts_activities']), ENT_QUOTES);
$bd_usl_cl .= " AND `id` IN (
SELECT client_id FROM clients_activities
WHERE activity_id IN (" . implode(", ", $activitiesArr) . ")
)";
$_SESSION['filter_activities'] = $_POST['charts_activities'];
} else {
unset($_SESSION['filter_activities']);
}
if(isset($_POST['charts_objects_type'])){
$typesArr = json_decode(html_entity_decode($_POST['charts_objects_type']), ENT_QUOTES);
if(!empty($typesArr)){
$typeArr = array();
foreach($typesArr as $typeCl){
$typeArr[] = "`type` like '%&quot;{$typeCl}&quot;%'";
}
$bd_usl .= " AND (".implode(" OR ",$typeArr).")";
}
$_SESSION['filter_client_objects_type'] = $_POST['charts_objects_type'];
} else {
unset($_SESSION['filter_client_objects_type']);
}
if (isset($_POST['priority1']) || isset($_POST['priority2']) || isset($_POST['priority3'])
|| isset($_POST['priority4'])) {
$p_sql .= " AND (";
for ($i = 1; $i <= 4; $i++) {
if ($_POST['priority']) {
$p_sql .= 'priority =' .$i. ' or ';
} else {
unset($_SESSION['priority'. $i]);
}
}
$p_sql = substr($p_sql, 0, -4);
$p_sql .= ")";
$bd_usl .= $p_sql;
}
if(isset($_POST['charts_rol'])){
$rolesArr = json_decode(html_entity_decode($_POST['charts_rol']), ENT_QUOTES);
if(!empty($rolesArr)){
$sroleArr = array();
foreach($rolesArr as $roleCl){
$roleArr[] = "`role` like '%&quot;{$roleCl}&quot;%'";
}
$bd_usl .= " AND (".implode(" OR ",$roleArr).")";
}
$_SESSION['filter_client_rol'] = $_POST['charts_rol'];
} else {
unset($_SESSION['filter_client_rol']);
}
if (isset($_POST['source'])) {
$sourcesArr = json_decode(html_entity_decode($_POST['source']), ENT_QUOTES);
$sourceArr = array();
if (!empty($sourcesArr)) {
foreach ($sourcesArr as $sourceCl) {
if ($sourceCl == 0) {
$sourceArr[] = "`source` is null";
$sourceArr[] = "`source` = ''";
$sourceArr[] = "`source` = 'null'";
} else {
$sourceArr[] = "`source` = '{$sourceCl}'";
}
}
$bd_usl .= " AND (" . implode(" OR ", $sourceArr) . ")";
$_SESSION['filter_source'] = $_POST['source'];
} else {
unset($_SESSION['filter_source']);
}
} else {
unset($_SESSION['filter_source']);
}
$filter_partners = null;
if (isset($_POST['partner'])) {
$filter_partners = json_decode(html_entity_decode($_POST['partner']), ENT_QUOTES);
$_SESSION['filter_partner'] = $_POST['partner'];
}
if ($filter_partners) {
$employees_ids = [];
$partners = new Partners();
foreach($filter_partners as $employee) {
if (preg_match('/all_(\d+)/', $employee, $matches)) {
if ($id = intval($matches[1])) {
$employees = $partners->getEmployeesId($id, false, true);
$employees = array_unique($employees);
foreach($employees as $employee) {
$employees_ids[] = "`employee_id` = '{$employee}'";
}
}
} else {
if ($employee == 0) {
$employees_ids[] = "`employee_id` IS NULL";
$employees_ids[] = "`employee_id` = ''";
$employees_ids[] = "`employee_id` = 'NULL'";
} else {
$employees_ids[] = "`employee_id` = '{$employee}'";
}
}
}
$bd_usl .= " AND (" . implode(" OR ", $employees_ids) . ")";
} else {
unset($_SESSION['filter_partner']);
}
$bd_usl2 = '';
if(isset($_POST['funnel'])){
$funnelArr = json_decode(html_entity_decode($_POST['funnel']), ENT_QUOTES);
if(!empty($funnelArr)){
$bd_usl .= " AND funnel_id in (".implode(', ',$funnelArr).")";
$bd_usl2 .= " AND funnel_id in (".implode(', ',$funnelArr).")";
}
}
$bd_usl_managers = " AND (".implode(" OR ",$arrIdUser).")";
foreach ($usersId as $us) {
if($bd_doers != ''){
$bd_doers .= ' or ';
}
$bd_doers .= "`doers` like '%&quot;".$us."&quot;:1%'";
}
$bd_usl .= " AND cancel=0";
$gmtmsk = get_time_zone_user();
$time_zone = '';
if($gmtmsk >= 0){
$time_zone = '+'.$gmtmsk.' hour';
} else {
$time_zone = '-'.$gmtmsk.' hour';
}
$this_datetime = ($time_zone == '') ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", strtotime($time_zone));
if(isset($_POST['clients']) && $_POST['clients'] == 1){
$sql = "SELECT `id` FROM clients WHERE 1 $bd_usl_managers $bd_usl $bd_usl_cl and deleted <> 1 and confirm = 1";
//echo $sql."\n";
$q = mysql_query($sql);
$row = mysql_num_rows($q);
$result['count'] = (int)$row;
} else if (isset($_POST['events_old']) && $_POST['events_old'] == 1){
$sql = "SELECT `id` FROM clients WHERE 1 $bd_usl_managers $bd_usl $bd_usl_cl and deleted <> 1";
$sql .= " UNION ";
$sql .= "SELECT `id` FROM clients WHERE 1 $bd_usl $bd_usl_cl and deleted <> 1 and (".$bd_doers.")";
//echo $sql;
$q = mysql_query($sql);
$row = mysql_num_rows($q);
$whereEv = '';
$tempEv = array();
//$tempEv[] = 0;
if($row > 0){
while($r = mysql_fetch_assoc($q)){
$tempEv[] = $r['id'];
}
$whereEv = ' AND client_id in ('.implode(', ', $tempEv).') ';
}
// считаем события клиентов
$sql = "SELECT count(id) FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and cancel=0 and calendar_view = 0".
" and schedule_date is not null $whereTasks $whereEv and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') <= '".$this_datetime."'";
/*if($_SESSION['id'] == 13934){
echo $sql;
}*/
//echo $sql;
$rez = mysql_query($sql);
$clientEventCount = mysql_result($rez,0);
// суммарное количество событий по объектам и пользователям
$result['events_old'] = intval($clientEventCount);
} else if (isset($_POST['events']) && $_POST['events'] == 1) {
$sql = "SELECT `id` FROM clients WHERE 1 $bd_usl_managers $bd_usl $bd_usl_cl and deleted <> 1 AND cancel=0";
$sql .= " UNION ";
$sql .= "SELECT `id` FROM clients WHERE 1 $bd_usl $bd_usl_cl and deleted <> 1 and (".$bd_doers.") AND cancel=0";
// echo $sql;
$q = mysql_query($sql);
$row = mysql_num_rows($q);
$whereEv = '';
$tempEv = array();
//$tempEv[] = 0;
if($row > 0){
while($r = mysql_fetch_assoc($q)){
$tempEv[] = $r['id'];
}
$whereEv = ' AND client_id in ('.implode(', ', $tempEv).') ';
}
// считаем события объектов
$sql = "SELECT count(id) FROM user_object_events WHERE object_id != 0 and user_id in (". implode(', ', $usersId).") and calendar_view = 0
and schedule_date is not null $whereTasks and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') > '".$this_datetime."'";
$rez = mysql_query($sql);
$objectEventCount = mysql_result($rez,0);
// считаем события клиентов
$sql = "SELECT count(id) FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and cancel=0 and calendar_view = 0
and schedule_date is not null $whereTasks $whereEv and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') > '".$this_datetime."'";
// echo $sql;
$rez = mysql_query($sql);
$clientEventCount = mysql_result($rez,0);
$result['events'] = intval($clientEventCount);
} else if (isset($_POST['expired_stages_clients']) && $_POST['expired_stages_clients'] == 1){
//Посроченные этапы
$agency_id = (int)$_POST['agency_id'];
$expiredStagesClients = 0;
$stepIds = array();
$stepDays = array();
$funnelIds = array();
if($agency_id > 0){
//Этапы
$sql_f = "SELECT id FROM `funnel` WHERE agency_id=$agency_id AND deleted = 0";
$q_f = mysql_query($sql_f);
while($r_f = mysql_fetch_assoc($q_f)){
$funnelIds[] = (int)$r_f['id'];
}
$sql_st = "SELECT id, days_step FROM funnel_steps WHERE funnel_id in (".implode(',', $funnelIds).")";
$q_st = mysql_query($sql_st);
while($r_st = mysql_fetch_assoc($q_st)){
$stepDays[(int)$r_st['id']] = $r_st['days_step'];
}
$sql = "SELECT id, step_id, date_add, (SELECT date_update FROM clients_funnel_step WHERE client_id=clients.id) as date_update FROM clients WHERE cancel=0 AND funnel_id > 0 AND deleted = 0 AND confirm <> 0 AND who_work in (".implode(',', $usersId).") AND step_id > 0 $bd_usl $bd_usl_cl";
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
if($stepDays[(int)$r['step_id']] > 0){
$days_step = $stepDays[(int)$r['step_id']];
if(!empty($r['date_update'])){
$lostDate = $r['date_update'];
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if($interval > $days_step){
$expiredStagesClients++;
}
} else {
$lostDate = $r['date_add'];
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if($interval > $days_step){
$expiredStagesClients++;
}
}
}
}
}
$result['expired_stages_clients'] = $expiredStagesClients;
} else if (isset($_POST['expired_stages_requisitions']) && $_POST['expired_stages_requisitions'] == 1){
//Посроченные этапы
$agency_id = (int)$_POST['agency_id'];
$expiredStagesRequisitions = 0;
$stepIds = array();
$stepDays = array();
$funnelIds = array();
if($agency_id > 0){
//Этапы
$sql_f = "SELECT id FROM `funnel` WHERE agency_id=$agency_id AND deleted = 0";
$q_f = mysql_query($sql_f);
while($r_f = mysql_fetch_assoc($q_f)){
$funnelIds[] = (int)$r_f['id'];
}
$sql_st = "SELECT id, days_step FROM funnel_steps WHERE funnel_id in (".implode(',', $funnelIds).")";
$q_st = mysql_query($sql_st);
while($r_st = mysql_fetch_assoc($q_st)){
$stepDays[(int)$r_st['id']] = $r_st['days_step'];
}
$sql = "SELECT id, step_id, created_at, (SELECT date_update FROM clients_funnel_step WHERE req_id=requisitions.id) as date_update FROM requisitions WHERE cancel=0 AND funnel_id > 0 AND deleted = 0 AND confirm = 1 AND who_work in (".implode(',', $usersId).") AND step_id > 0 $bd_usl $bd_usl_req";
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
if($stepDays[(int)$r['step_id']] > 0){
$days_step = $stepDays[(int)$r['step_id']];
if(!empty($r['date_update'])){
$lostDate = $r['date_update'];
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if($interval > $days_step){
$expiredStagesRequisitions++;
}
} else {
$lostDate = $r['created_at'];
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if($interval > $days_step){
$expiredStagesRequisitions++;
}
}
}
}
}
$result['expired_stages_requisitions'] = $expiredStagesRequisitions;
} else {
$bd_usl_del = " AND (if((SELECT count(*) FROM `events_clients` WHERE client_id=clients.id and event='delete' order by id desc limit 1)>0, "
. "(SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' order by id desc limit 1) $date_between, "
. "clients.date_add $date_between))";
$sql = "SELECT id FROM clients WHERE confirm=10 $bd_usl_managers $bd_usl $bd_usl_cl $bd_usl_del and deleted=1 AND cancel=0";
$q = mysql_query($sql);
$row = mysql_num_rows($q);
$successfulClients = (int)$row;
$result['successful_clients'] = $successfulClients;
$sql = "SELECT id FROM clients WHERE confirm!=10 $bd_usl_managers $bd_usl $bd_usl_cl $bd_usl_del and deleted=1 AND cancel=0";
$q = mysql_query($sql);
$row = mysql_num_rows($q);
$closedClients = (int)$row;
$result['closed_clients'] = $closedClients;
$bd_usl_del = " AND (if((SELECT count(*) FROM `events_clients` WHERE req_id=requisitions.id and event='delete' order by id desc limit 1)>0, "
. "(SELECT date_update FROM `events_clients` WHERE req_id=requisitions.id and event='delete' order by id desc limit 1) $date_between, "
. "requisitions.created_at $date_between))";
$sql = "SELECT id FROM requisitions WHERE cancel=0 and confirm!=10 AND who_work in (".implode(',', $usersId).") and deleted=1 and created_at " . $bd_usl . $bd_usl_req . $bd_usl_del;
//echo $sql;
$q = mysql_query($sql);
$row = mysql_num_rows($q);
$closedRequisitions = (int)$row;
$result['closed_requisitions'] = $closedRequisitions;
$sql = "SELECT id FROM requisitions WHERE cancel=0 and confirm=10 AND who_work in (".implode(',', $usersId).") and deleted=1 and created_at " . $bd_usl . $bd_usl_req . $bd_usl_del;
$q = mysql_query($sql);
$row = mysql_num_rows($q);
$successfulRequisitions = (int)$row;
$result['successful_requisitions'] = $successfulRequisitions;
$sql = "SELECT count(id) FROM requisitions WHERE deleted=0 and confirm=1 AND cancel=0 and who_work in (".implode(',',$usersId).") $bd_usl $bd_usl_req";
$q = mysql_query($sql);
$row = mysql_result($q,0);
$requisitions = (int)$row;
$result['requisitions'] = $requisitions;
$sql = "SELECT id FROM requisitions WHERE cancel=0 and who_work in (".implode(',',$usersId).") $bd_usl $bd_usl_req";
$sql .= " UNION ";
$sql .= "SELECT `id` FROM requisitions WHERE 1 $bd_usl $bd_usl_req and deleted <> 1 and cancel=0 and (".$bd_doers.")";
//echo $sql;
$q = mysql_query($sql);
$whereReqArr = array();
$wereReq = '';
$openTasksRequisitions = 0;
$expiredTasksRequisitions = 0;
while($r = mysql_fetch_assoc($q)){
$whereReqArr[] = $r['id'];
}
if(!empty($whereReqArr)){
$wereReq = " AND req_id in (".implode(',',$whereReqArr).")";
$sql = "SELECT count(id) FROM user_client_events WHERE client_id=0 and user_id in (". implode(', ', $usersId).") and cancel=0 and calendar_view = 0
and schedule_date is not null $whereTasks $wereReq and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') > '".$this_datetime."'";
$q = mysql_query($sql);
$row = mysql_result($q,0);
$openTasksRequisitions = (int)$row;
$sql = "SELECT count(id) FROM user_client_events WHERE client_id=0 and user_id in (". implode(', ', $usersId).") and cancel=0 and calendar_view = 0
and schedule_date is not null $whereTasks $wereReq and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') <= '".$this_datetime."'";
$q = mysql_query($sql);
$row = mysql_result($q,0);
$expiredTasksRequisitions = (int)$row;
}
$result['open_tasks_requisitions'] = $openTasksRequisitions;
$result['expired_tasks_requisitions'] = $expiredTasksRequisitions;
$sql = "SELECT id FROM objects WHERE id_add_user in (".implode(',', $usersId).") and archive=0 LIMIT 1000000 OPTION max_matches=1000000";
$q = $db_sphinx->query($sql);
$row = $db_sphinx->num_rows($q);
$objects = (int)$row;
$result['objects'] = $objects;
$sql = "SELECT count(id) FROM user_object_events WHERE object_id != 0 and user_id in (". implode(', ', $usersId).") and calendar_view = 0".
" and schedule_date is not null $whereTasks and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') <= '".$this_datetime."'";
$q = mysql_query($sql);
$row = mysql_result($q, 0);
$expiredTasksObjects = (int)$row;
$result['expired_tasks_objects'] = $expiredTasksObjects;
$sql = "SELECT count(id) FROM user_object_events WHERE object_id != 0 and user_id in (". implode(', ', $usersId).") and calendar_view = 0".
" and schedule_date is not null $whereTasks and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') > '".$this_datetime."'";
$q = mysql_query($sql);
$row = mysql_result($q, 0);
$openTasksObjects = (int)$row;
$result['open_tasks_objects'] = $openTasksObjects;
//ищем то, что не публикуется
$arr_pac = array();
$sql_pac = "select object_id from advertising_package_object_publish where active = 1";
$q_pac = mysql_query($sql_pac);
while($r_pac = mysql_fetch_row($q_pac)){
$arr_pac[] = $r_pac[0];
}
$s_3 = ' AND add_to_yandex_feed=0 AND add_to_zipal=0 AND add_to_avito_feed=0 AND add_to_cian_feed=0 AND add_to_domclick_feed=0 AND add_to_emls_feed=0 AND add_to_bn_feed=0 ';
if (!empty($arr_pac))
$s_3 .= ' AND id NOT IN ('.implode(',', $arr_pac).') ';
//список ИД, которые нигде не опубликованы, но в рекламе
$idsNotPublish = array();
$sqlIdsNotPublish = "SELECT id FROM objects WHERE id_add_user in (".implode(',', $usersId).") $s_3 LIMIT 1000000 OPTION max_matches=1000000";
$qIdsNotPublish = $db_sphinx->query($sqlIdsNotPublish, true);
while ($obj = $db_sphinx->fetch_assoc($qIdsNotPublish)) {
$idsNotPublish[] = $obj['id'];
}
//выбираем все в рекламе, но за исключением тех, которые нигде не публикуются
$sql = "SELECT id FROM objects WHERE id_add_user in (".implode(',', $usersId).") and (use_in_advert = 1) ";
if(!empty($idsNotPublish)){
$sql .= "and id NOT IN (".implode(',', $idsNotPublish).")";
}
$sql .= " LIMIT 1000000 OPTION max_matches=1000000";
$q = $db_sphinx->query($sql, true);
$row = $db_sphinx->num_rows($q);
$objectsAdvert = (int)$row;
$result['objects_advert'] = $objectsAdvert;
//}
$sql_plan = "SELECT sum(`summa`) as summa FROM `sales_plan` WHERE `user_id` in (". implode(', ', $usersPlan) .") AND `month` in (". implode(', ', $months) .") AND `year` in (". implode(', ', $years) .")";
if(!empty($monthsyears)){
$sql_plan = "SELECT sum(`summa`) as summa FROM `sales_plan` WHERE `user_id` in (". implode(', ', $usersPlan) .") AND CONCAT(month,'-', year) in ('". implode('\', \'', $monthsyears) ."')";
}
//echo $sql_plan;
$q_plan = mysql_query($sql_plan);
$summa_total = mysql_result($q_plan,0);
$sql = "SELECT sum(summa) as summa FROM clients WHERE 1 AND who_work in (".implode(',', $usersId).") and deleted = 1 AND cancel=0 and confirm = 10 and "
. "(SELECT `date_update` FROM `events_clients` WHERE `client_id` = clients.id AND `event` = 'delete' order by id desc limit 1) $date_between";
//echo $sql;
$q = mysql_query($sql);
$summa_done = mysql_result($q,0);
$sql = "SELECT sum(summa) as summa FROM requisitions WHERE cancel=0 and confirm=10 AND who_work in (".implode(',', $usersId).") and deleted=1 " . $bd_usl_del;
$q = mysql_query($sql);
$summa_done_req = mysql_result($q,0);
$procentDay = 0;
$summa_done = (int)$summa_done + (int)$summa_done_req;
$summa_diff = $summa_total - $summa_done;
$procent_done = (int)(($summa_done/$summa_total)*100);
if($summa_total == 0){
$procent_done = 100;
$summa_diff = 0;
}
if($procent_done > 0){
$procentDay = $procent_done;
if($procent_done > 100){
$procentDay = 100;
}
}
$summaDiffText = '<div class="target__result-item-total">' . number_format($summa_diff, 0, ',', ' ') . '<span class="rub">p</span></div>';
if($summa_diff < 0){
$summaDiffText = '<div class="target__result-item-total"> + ' . number_format($summa_diff*(-1), 0, ',', ' ') . '<span class="rub">p</span></div>';
}
$html = '<div class="target-row">
<div class="target">
<span class="target-title">Цель</span>
<span class="target-total">'.number_format($summa_total, 0, ',', ' ').'<span class="rub">p</span></span>
</div>
<div class="target">
<span class="target-title">Период</span>
<span class="target-month">
<span class="">'.$readPeriod.'</span>
</span>
</div>
</div>
<div class="target-row target-row-progress">
<div class="target__progress">
<!-- width - процент выполнения -->
<div class="target__progress-line" style="width: '.$procentDay.'%;"></div>
<div class="target__progress-total">'.$procent_done.'%</div>
<div class="target__progress-now" style="left: '.$procentDays.'%;">
<div class="progress-baloon">
<span class="progress-baloon-day">Сегодня</span>
<span class="progress-baloon-date" data-role="today">'.date('d').' '. $nameMonth .'</span>
</div>
</div>
</div>
<div class="target__month-scale target-month'.$totalDays.'">';
for($i=0; $i < $totalDays; $i++){
$html .= '<div class="target__month-scale-item"></div>';
}
$html .= '
<div class="target__month-scale-item-first">'.$firstDay.' '.$firstNameMonth.'</div>
<div class="target__month-scale-item-last">'.$lastDay.' '.$lastNameMonth.'</div>
</div>
</div>
<div class="target-row target-results">
<div class="target__result result-now">
<div class="target__result-item">
<div class="target__result-item-title">Выполнено</div>
<div class="target__result-item-total">' . number_format($summa_done, 0, ',', ' ') . '<span class="rub">p</span></div>
</div>
</div>
<div class="target__result">
<div class="target__result-item">
<div class="target__result-item-title">Осталось</div>
' . $summaDiffText . '
</div>
</div>
<div class="target__result">
<div class="target__result-item">
<div class="target__result-item-title">Процент выполнения</div>
<div class="target__result-item-total">'.$procent_done.'%</div>
</div>
</div>
</div> ';
$result['html'] = $html;
}
echo json_encode($result);
}
if(isset($_POST['stats'])){
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
$cl = new Clients();
$itogResult = array();
$usersArr = json_decode($_POST['responsible'], true);
/* if(empty($usersArr)){
$usersArr = $_POST['user_id'];
}*/
$bd_usl_managers = '';
$bd_usl = '';
$bd_doers = '';
$bd_usl_cl = '';
$bd_usl_req = '';
$arrIdUser = array();
$userIds = array();
$usersPlan = array();
$usersId = $cl -> getUsersFilter($usersArr, $_POST['user_id'], $_POST['users_admin']);
$usersPlan = $usersId;
$req_type = [];
$req_type2 = [];
foreach($usersId as $userId){
$arrIdUser[] = "who_work = $userId";
$userIds[] = $userId;
}
$agency_id = 0;
if(isset($_POST['agency_id'])){
$agency_id = (int)$_POST['agency_id'];
}
$period = 'all';
$whereTasks = "";
if($_POST['period']){
$period = $_POST['period'];
$dates = getPeriod($period,$_POST['onDate'],$_POST['offDate']);
$date_between = $dates['between'];
$whereTasks = $dates['whereTasks'];
}
if(isset($_POST['charts_type'])){
$typesArr = json_decode(html_entity_decode($_POST['charts_type']), ENT_QUOTES);
if(!empty($typesArr)){
$typeArr = array();
foreach($typesArr as $typeCl){
$typeArr[] = "work_type like '%&quot;{$typeCl}&quot;%'";
}
$bd_usl .= " AND (".implode(" OR ",$typeArr).")";
}
}
if(isset($_POST['charts_activities']) && !empty($_POST['charts_activities']) && $_POST['charts_activities'] != 'null'){
$activitiesArr = json_decode(html_entity_decode($_POST['charts_activities']), ENT_QUOTES);
$activitieArr = array();
foreach($activitiesArr as $activitieCl){
$activitieArr[] = "`activities` like '%&quot;{$activitieCl}&quot;%'";
}
if(!empty($activitieArr)){
$bd_usl_req .= " AND (".implode(" OR ",$activitieArr).")";
}
$_SESSION['filter_activities'] = $_POST['charts_activities'];
} else {
unset($_SESSION['filter_activities']);
}
if (isset($_POST['charts_activities']) && !empty($_POST['charts_activities']) && $_POST['charts_activities'] != 'null') {
$activitiesArr = json_decode(html_entity_decode($_POST['charts_activities']), ENT_QUOTES);
$bd_usl_cl .= " AND `id` IN (
SELECT client_id FROM clients_activities
WHERE activity_id IN (" . implode(", ", $activitiesArr) . ")
)";
$_SESSION['filter_activities'] = $_POST['charts_activities'];
} else {
unset($_SESSION['filter_activities']);
}
if(isset($_POST['charts_objects_type'])){
$typesArr = json_decode(html_entity_decode($_POST['charts_objects_type']), ENT_QUOTES);
if(!empty($typesArr)){
$typeArr = array();
foreach($typesArr as $typeCl){
$typeArr[] = "`type` like '%&quot;{$typeCl}&quot;%'";
}
$bd_usl .= " AND (".implode(" OR ",$typeArr).")";
}
}
if(isset($_POST['charts_rol'])){
$rolesArr = json_decode(html_entity_decode($_POST['charts_rol']), ENT_QUOTES);
if(!empty($rolesArr)){
$roleArr = array();
foreach($rolesArr as $roleCl){
$roleArr[] = "`role` like '%&quot;{$roleCl}&quot;%'";
}
$bd_usl .= " AND (".implode(" OR ",$roleArr).")";
}
}
$sourceArr = array();
if(isset($_POST['source'])){
$sourcesArr = json_decode(html_entity_decode($_POST['source']), ENT_QUOTES);
if(!empty($sourcesArr )){
foreach($sourcesArr as $sourceCl){
if($_POST['client_req'] == 1){
if($sourceCl == 0){
$sourceArr[] = "`r`.`source` is null";
$sourceArr[] = "`r`.`source` = ''";
$sourceArr[] = "`r`.`source` = 'null'";
} else {
$sourceArr[] = "`r`.`source` = '{$sourceCl}'";
}
} else {
if($sourceCl == 0){
$sourceArr[] = "`c`.`source` is null";
$sourceArr[] = "`c`.`source` = ''";
$sourceArr[] = "`c`.`source` = 'null'";
} else {
$sourceArr[] = "`c`.`source` = '{$sourceCl}'";
}
}
}
$bd_usl .= " AND (".implode(" OR ",$sourceArr).")";
$_SESSION['filter_source'] = $_POST['source'];
} else {
unset($_SESSION['filter_source']);
}
} else {
unset($_SESSION['filter_source']);
}
$filter_partners = null;
if ($_POST['partner']) {
$filter_partners = json_decode(html_entity_decode($_POST['partner']), ENT_QUOTES);
$_SESSION['filter_partner'] = $_POST['partner'];
}
if ($filter_partners) {
$employees_ids = [];
$partners = new Partners();
foreach($filter_partners as $employee) {
if (preg_match('/all_(\d+)/', $employee, $matches)) {
if ($id = intval($matches[1])) {
$e_list = $partners->getEmployeesId($id, false);
$e_list = array_unique($e_list);
foreach($e_list as $empl) {
$employees_ids[] = "`c`.`employee_id` = '{$empl}'";
}
}
} else {
if ($employee == 0) {
$employees_ids[] = "`c`.`employee_id` IS NULL";
$employees_ids[] = "`c`.`employee_id` = ''";
$employees_ids[] = "`c`.`employee_id` = 'NULL'";
} else {
$employees_ids[] = "`c`.`employee_id` = '{$employee}'";
}
}
}
$bd_usl .= " AND (" . implode(" OR ", $employees_ids) . ")";
} else {
unset($_SESSION['filter_partner']);
}
$funnel_step = false;
//Работа с воронками
if(isset($_POST['funnel'])){
$funnelArr = json_decode(html_entity_decode($_POST['funnel']), ENT_QUOTES);
$name_c_r = "клиенты";
if($_POST['client_req'] == 1){
$name_c_r = "заявки";
}
if(!empty($funnelArr)){
if(count($funnelArr) == 1){
$funnel_step = array();
$funnel_id = $funnelArr[0];
$bd_usl .= " AND funnel_id = ".$funnel_id;
if($funnel_id == 0){
$funnel_step = array('titles' => array(
'new' => "Новые ".$name_c_r,
'work' => "В работе",
'offer' => "Презентация",
'deal' => "Сделка",
'showing' => "Показ",
'reservation' => "Бронь",
'meet' => "Подаем на ипотеку",
'end' => "Закрытые ".$name_c_r,
'end_sdelka' => "Успешные"
));
} else {
$sql_f = "SELECT id, name FROM `funnel_steps` WHERE funnel_id = ".$funnel_id;
$q_f = mysql_query($sql_f);
$titles = array();
while($r_f = mysql_fetch_assoc($q_f)){
$titles['step_'.$r_f['id']] = $r_f['name'];
}
$titles['end'] = "Закрытые ".$name_c_r;
$titles['end_sdelka'] = "Успешные";
$funnel_step = array('titles' => $titles);
}
} else {
$bd_usl .= " AND c.funnel_id in (".implode(', ', $funnelArr).")";
}
}
}
$bd_usl .= " AND cancel=0";
$bd_usl_managers = " AND (".implode(" OR ",$arrIdUser).")";
$sql = "SELECT c.id, c.id_agent, c.stage, c.summa, c.work_type, c.role, c.step_id, c.deleted, c.confirm, c.employee_id, c.date_add, a.source, p.name as p_name, e.name as e_name, e.position as e_position, c.source as num_source, c.who_work
FROM clients as c
LEFT JOIN advertising_sources as a on c.source = a.id
LEFT JOIN partners_employees as e on c.employee_id = e.id
LEFT JOIN partners as p on e.partner_id = p.id
WHERE 1 $bd_usl_managers $bd_usl $bd_usl_cl and c.date_add $date_between order by c.date_add";
//echo $sql;
if($_POST['client_req'] == 1){
$sql_t = "SELECT * FROM requisitions_type WHERE agency_id = 0 and del = 0 order by order_number, id";
if($agency_id > 0){
$sql_t = "SELECT * FROM requisitions_type WHERE (agency_id = {$agency_id} || agency_id = 0) and del = 0 order by order_number, id";
}
$q_t = mysql_query($sql_t);
$req_type[] = array('bullet'=>'round', 'balloonText'=>'[[title]]:[[value]]', 'id'=>'clientsQuantity', 'title'=>'Все', 'valueField'=> 'quantity');
$req_type2[] = array('bullet'=>'round', 'balloonText'=>'[[title]]:[[value]]', 'id'=>'clientsAddQuantity', 'title'=>'Все', 'valueField'=> 'quantity');
$req_sale = array();
$req_type_menedger_sdelka = array();
$reqs = array();
while($r_t = mysql_fetch_assoc($q_t)){
$temp_req['bullet'] = "round";
$temp_req["balloonText"] = "[[title]]:[[value]]";
$temp_req['id']= 'reqs'.$r_t['id'];
$temp_req['title'] = $r_t['name'];
$temp_req['valueField'] = 'quantity'.$r_t['id'];
$temp_req2['bullet'] = "round";
$temp_req2["balloonText"] = "[[title]]:[[value]]";
$temp_req2['id']= 'reqs2'.$r_t['id'];
$temp_req2['title'] = $r_t['name'];
$temp_req2['valueField'] = 'quantity'.$r_t['id'];
$temp_men['balloonText'] = "[[title]] у [[category]]:[[value]]";
$temp_men["fillAlphas"] = 1;
$temp_men['id']= 'saleId'.$r_t['id'];
$temp_men['type'] = "column";
$temp_men['title'] = $r_t['name'];
$temp_men['valueField'] = 'sale'.$r_t['id'];
$temp_men2['balloonText'] = "[[title]] у [[category]]:[[value]]";
$temp_men2["fillAlphas"] = 1;
$temp_men2['id']= 'saleSdelkaId'.$r_t['id'];
$temp_men2['type'] = "column";
$temp_men2['title'] = $r_t['name'];
$temp_men2['valueField'] = 'sale'.$r_t['id'];
$req_sale['sale'.$r_t['id']] = 0;
$req_type[] = $temp_req;
$req_type2[] = $temp_req2;
$req_type_menedger[] = $temp_men;
$req_type_menedger_sdelka[] = $temp_men2;
$work_types_req[$r_t['id']] =array();
$work_types_req_add[$r_t['id']] =array();
$reqs[] = $r_t;
}
$sql = "SELECT r.id, r.user_id, r.stage, r.summa, r.step_id, r.type_id, r.deleted, r.confirm, r.created_at as date_add, a.source, r.source as num_source, r.who_work
FROM requisitions as r
LEFT JOIN advertising_sources as a on r.source = a.id
WHERE 1 AND ( r.who_work in (".implode(',',$userIds).") OR r.user_id in (".implode(',',$userIds).")) $bd_usl $bd_usl_req and r.created_at $date_between order by r.created_at";
if(isset($_POST['date_close']) && $_POST['date_close'] > 0){
$sql = "SELECT r.id, r.user_id, r.stage, r.summa, r.step_id, r.type_id, r.deleted, r.confirm, r.created_at as date_add, a.source, r.source as num_source, r.who_work
FROM requisitions as r
LEFT JOIN advertising_sources as a on r.source = a.id
WHERE 1 AND ( r.who_work in (".implode(',',$userIds).") OR r.user_id in (".implode(',',$userIds).")) $bd_usl $bd_usl_req and (SELECT date_update FROM `events_clients` WHERE req_id=r.id and event='delete' order by id desc limit 1) $date_between order by r.created_at";
}
/*if($_SESSION['id'] == 13154){
echo $sql;
}*/
}
// $itogResult['sql'] = $sql;
$q = mysql_query($sql);
$sources = array();
$employees = array();
$conversion = 0;
$conversions = array();
$dateCon = array();
$sdelok = 0;
$summaSdelok = 0;
$clients = array();
$clientsAdd = array();
$work_types_rentQuantity = array();
$work_types_buyQuantity = array();
$work_types_NBQuantity = array();
$work_types_add = array();
$work_types_rentQuantity_add = array();
$work_types_buyQuantity_add = array();
$work_types_NBQuantity_add = array();
$totalClients = mysql_num_rows($q);
$manager = array();
$managerSdelka = array();
if($funnel_step){
//var_dump($funnel_step['titles']);
foreach ($funnel_step['titles'] as $key => $step) {
//var_dump($key);
$result[$key] = 0;
}
}
$totalWork = 0;
$userId = $_SESSION['id'];
while($r = mysql_fetch_assoc($q)){
if(!isset($result['work'])) $result['work'] = 0;
if(!isset($result['new'])) $result['new'] = 0;
if(!isset($result['offer'])) $result['offer'] = 0;
if(!isset($result['showing'])) $result['showing'] = 0;
if(!isset($result['reservation'])) $result['reservation'] = 0;
if(!isset($result['meet'])) $result['meet'] = 0;
if(!isset($result['deal'])) $result['deal'] = 0;
if(!isset($result['end'])) $result['end'] = 0;
if(!isset($result['end_sdelka'])) $result['end_sdelka'] = 0;
// if($r['confirm'] != '0'){
if(!isset($dateCon[date('Y-m', strtotime($r['date_add']))])) $dateCon[date('Y-m', strtotime($r['date_add']))] = 0;
$dateCon[date('Y-m', strtotime($r['date_add']))]++;
if(!$_POST['client_req']){
if($r['id_agent'] == $userId){
if(!isset($work_types_add[date('Y-m', strtotime($r['date_add']))])) $work_types_add[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_add[date('Y-m', strtotime($r['date_add']))]++;
}
$work_type = json_decode(html_entity_decode($r['work_type']), true);
if(in_array("Аренда", $work_type)){
if(!isset($work_types_rentQuantity[date('Y-m', strtotime($r['date_add']))])) $work_types_rentQuantity[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_rentQuantity[date('Y-m', strtotime($r['date_add']))]++;
if($r['id_agent'] == $userId){
if(!isset($work_types_rentQuantity_add[date('Y-m', strtotime($r['date_add']))])) $work_types_rentQuantity_add[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_rentQuantity_add[date('Y-m', strtotime($r['date_add']))]++;
}
}
if(in_array("Вторичка", $work_type)){
if(!isset($work_types_buyQuantity[date('Y-m', strtotime($r['date_add']))])) $work_types_buyQuantity[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_buyQuantity[date('Y-m', strtotime($r['date_add']))]++;
if($r['id_agent'] == $userId){
if(!isset($work_types_buyQuantity_add[date('Y-m', strtotime($r['date_add']))])) $work_types_buyQuantity_add[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_buyQuantity_add[date('Y-m', strtotime($r['date_add']))]++;
}
}
if(in_array("Новостройки", $work_type)){
if(!isset($work_types_NBQuantity[date('Y-m', strtotime($r['date_add']))])) $work_types_NBQuantity[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_NBQuantity[date('Y-m', strtotime($r['date_add']))]++;
if($r['id_agent'] == $userId){
if(!isset($work_types_NBQuantity_add[date('Y-m', strtotime($r['date_add']))])) $work_types_NBQuantity_add[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_NBQuantity_add[date('Y-m', strtotime($r['date_add']))]++;
}
}
} else if($_POST['client_req'] == 1){
if(in_array($r['user_id'],$usersId)){
if(!isset($work_types_add[date('Y-m', strtotime($r['date_add']))])) $work_types_add[date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_add[date('Y-m', strtotime($r['date_add']))]++;
}
foreach($reqs as $type){
//echo $type['id']."\n";
if($r['type_id'] == $type['id']){
if($r['confirm'] != 0){
if(!isset($work_types_req[$type['id']][date('Y-m', strtotime($r['date_add']))])) $work_types_req[$type['id']][date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_req[$type['id']][date('Y-m', strtotime($r['date_add']))]++;
}
if(in_array($r['user_id'],$usersId)){
if(!isset($work_types_req_add[$type['id']][date('Y-m', strtotime($r['date_add']))])) $work_types_req_add[$type['id']][date('Y-m', strtotime($r['date_add']))] = 0;
$work_types_req_add[$type['id']][date('Y-m', strtotime($r['date_add']))]++;
}
}
}
//var_dump($work_types_req_add);
}
if($r['who_work'] > 0){
if(!$_POST['client_req']){
if(!isset($manager[$r['who_work']])) $manager[$r['who_work']] == array('rent' => 0, 'buy' => 0, 'sale' => 0);
if(!isset($managerSdelka[$r['who_work']])) $managerSdelka[$r['who_work']] == array('rent' => 0, 'buy' => 0, 'sale' => 0);
$roles = json_decode(html_entity_decode($r['role']), true);
if(in_array('Арендатор', $roles) || in_array('Арендодатель', $roles)){
$manager[$r['who_work']]['rent']++;
if($r['deleted'] == '1' && $r['confirm'] == '10'){
$managerSdelka[$r['who_work']]['rent']++;
}
}
if(empty($roles) || in_array('Покупатель', $roles)){
$manager[$r['who_work']]['buy']++;
if($r['deleted'] == '1' && $r['confirm'] == '10'){
$managerSdelka[$r['who_work']]['buy']++;
}
}
if(in_array('Продавец', $roles)){
$manager[$r['who_work']]['sale']++;
if($r['deleted'] == '1' && $r['confirm'] == '10'){
$managerSdelka[$r['who_work']]['sale']++;
}
}
} else if($_POST['client_req'] == 1){
if(!isset($manager[$r['who_work']])) $manager[$r['who_work']] == $req_sale;
if(!isset($managerSdelka[$r['who_work']])) $managerSdelka[$r['who_work']] == $req_sale;
foreach($reqs as $type){
if(!isset($manager[$r['who_work']]['sale'.$type['id']])) $manager[$r['who_work']]['sale'.$type['id']] = 0;
if(!isset($managerSdelka[$r['who_work']]['sale'.$type['id']])) $managerSdelka[$r['who_work']]['sale'.$type['id']] = 0;
if($r['type_id'] == $type['id']){
$manager[$r['who_work']]['sale'.$type['id']]++;
if($r['deleted'] == '1' && $r['confirm'] == '10'){
$managerSdelka[$r['who_work']]['sale'.$type['id']]++;
}
}
}
}
}
// }
if($r['deleted'] != '1' ){
$totalWork++;
if($funnel_step && $funnel_id != 0){
$result['step_'.$r['step_id']]++;
} else {
if($r['stage'] == '2') $result['work']++;
if($r['stage'] == '1') $result['new']++;
if($r['stage'] == '3') $result['offer']++;
if($r['stage'] == '4') $result['showing']++;
if($r['stage'] == '5') $result['reservation']++;
if($r['stage'] == '6') $result['meet']++;
if($r['stage'] == '7') $result['deal']++;
}
} else if($r['deleted'] == '1'){
if($r['confirm'] == '10'){
$sdelok++;
$summaSdelok += $r['summa'];
$result['end_sdelka']++;
} else {
$result['end']++;
}
}
if($totalClients > 0){
$conversion = round(($sdelok/($totalWork + $result['end']))*100, 2);
}
if (isset($_SESSION['filter_source']) || (!isset($_SESSION['filter_source']) && !isset($_SESSION['filter_partner']))) {
if(!empty($r['source'])) {
if(!isset($sources[$r['source']])) $sources[$r['source']] = 0;
$sources[$r['source']]++;
} else if ($r['num_source'] == 10000){
if(!isset($sources['Объекты нашей компании'])) $sources['Объекты нашей компании'] = 0;
$sources['Объекты нашей компании']++;
} else if (!isset($_SESSION['filter_partner'])) {
if(!isset($sources['Источник не выбран'])) $sources['Источник не выбран'] = 0;
$sources['Источник не выбран']++;
}
}
if (isset($_SESSION['filter_partner']) || (!isset($_SESSION['filter_source']) && !isset($_SESSION['filter_partner']))) {
$partner_name = (
(($r['p_name']) ? $r['p_name'] . ' (' : '') .
($r['e_name'] . (isset($r['e_position']) ? ', ' . mb_strtolower($r['e_position']) : '')) .
(($r['p_name']) ? ')' : '')
);
if(!empty($partner_name)) {
if (!isset($employees[$partner_name]))
$employees[$partner_name] = 0;
$employees[$partner_name]++;
}/* else if (!isset($_SESSION['filter_source'])) {
if (!isset($employees['Партнёр не выбран']))
$employees['Партнёр не выбран'] = 0;
$employees['Партнёр не выбран']++;
}*/
}
}
$summa_done=array();
$deletes = array();
$sql_c = "SELECT count(id) as total, DATE_FORMAT ((SELECT `date_update` FROM `events_clients` WHERE `client_id` = c.id AND `event` = 'delete' order by id desc limit 1), '%Y-%m') as date FROM clients as c WHERE 1 $bd_usl_managers $bd_usl and deleted = 1 and confirm = 10 group by 2";
if($_POST['client_req']){
$sql_c = "SELECT count(id) as total, DATE_FORMAT ((SELECT `date_update` FROM `events_clients` WHERE `req_id` = r.id AND `event` = 'delete' order by id desc limit 1), '%Y-%m') as date FROM requisitions as r WHERE 1 $bd_usl_managers $bd_usl and deleted = 1 and confirm = 10 group by 2";
}
//echo $sql_c;
$q_c = mysql_query($sql_c);
while($r_c = mysql_fetch_assoc($q_c)){
if(!empty($r_c['date'])){
//if()
$summa_done[$r_c['date']] = (int)$r_c['total'];
}
}
$sql_c = "SELECT count(id) as total, DATE_FORMAT ((SELECT `date_update` FROM `events_clients` WHERE `client_id` = c.id AND `event` = 'delete' order by id desc limit 1), '%Y-%m')as date FROM clients as c WHERE 1 $bd_usl_managers $bd_usl and deleted = 1 and confirm <> 10 group by 2";
if($_POST['client_req']){
$sql_c = "SELECT count(id) as total, DATE_FORMAT ((SELECT `date_update` FROM `events_clients` WHERE `req_id` = r.id AND `event` = 'delete' order by id desc limit 1), '%Y-%m') as date FROM requisitions as r WHERE 1 $bd_usl_managers $bd_usl and deleted = 1 and confirm <> 10 group by 2";
}
$q_c = mysql_query($sql_c);
while($r_c = mysql_fetch_assoc($q_c)){
if(!empty($r_c['date'])){
$deletes[$r_c['date']] = (int)$r_c['total'];
}
}
$managerEvents = array();
//события
$sql_e = "SELECT count(id) as total, type, user_id FROM user_client_events WHERE calendar_view > 0
and schedule_date is not null and client_id > 0 and user_id in (". implode(', ', $usersId).") $whereTasks group by type, user_id";
if($_POST['client_req']){
$sql_e = "SELECT count(id) as total, type, user_id FROM user_client_events WHERE calendar_view > 0
and schedule_date is not null and req_id > 0 and user_id in (". implode(', ', $usersId).") $whereTasks group by type, user_id";
}
$q_e = mysql_query($sql_e);
while($r_e = mysql_fetch_assoc($q_e)){
if(!isset($managerEvents[$r_e['user_id']])) $managerEvents[$r_e['user_id']] = array('calls' => 0, 'showings' => 0, 'meetings' => 0, 'deals' => 0, 'reservations' => 0);
if($r_e['type'] == 'call'){
$managerEvents[$r_e['user_id']]['calls'] += (int)$r_e['total'];
}
if($r_e['type'] == 'show'){
$managerEvents[$r_e['user_id']]['showings'] += (int)$r_e['total'];
}
if($r_e['type'] == 'meet'){
$managerEvents[$r_e['user_id']]['meetings'] += (int)$r_e['total'];
}
if($r_e['type'] == 'deal'){
$managerEvents[$r_e['user_id']]['deals'] += (int)$r_e['total'];
}
if($r_e['type'] == 'reserv'){
$managerEvents[$r_e['user_id']]['reservations'] += (int)$r_e['total'];
}
}
$sql_e = "SELECT count(id) as total, type, user_id FROM user_object_events WHERE calendar_view > 0
and schedule_date is not null and user_id in (". implode(', ', $usersId).") $whereTasks group by type, user_id";
if($_POST['client_req']){
$sql_e = "SELECT count(id) as total, type, user_id FROM user_object_events WHERE calendar_view > 0
and schedule_date is not null and req_id > 0 and user_id in (". implode(', ', $usersId).") $whereTasks group by type, user_id";
}
$q_e = mysql_query($sql_e);
while($r_e = mysql_fetch_assoc($q_e)){
if(!isset($managerEvents[$r_e['user_id']])) $managerEvents[$r_e['user_id']] = array('calls' => 0, 'showings' => 0, 'meetings' => 0, 'deals' => 0, 'reservations' => 0);
if($r_e['type'] == 'call'){
$managerEvents[$r_e['user_id']]['calls'] += (int)$r_e['total'];
}
if($r_e['type'] == 'show'){
$managerEvents[$r_e['user_id']]['showings'] += (int)$r_e['total'];
}
if($r_e['type'] == 'meet'){
$managerEvents[$r_e['user_id']]['meetings'] += (int)$r_e['total'];
}
if($r_e['type'] == 'deal'){
$managerEvents[$r_e['user_id']]['deals'] += (int)$r_e['total'];
}
if($r_e['type'] == 'reserv'){
$managerEvents[$r_e['user_id']]['reservations'] += (int)$r_e['total'];
}
}
foreach($dateCon as $date => $val){
$clientsVal = 0;
$clientValRentQuantity = 0;
$clientValBuyQuantity = 0;
$clientValBuyNBQuantity = 0;
$temparr = array();
$temparr['date'] = $date;
$temparr['conversion'] = 0;
if($_POST['client_req'] == 1){
foreach($reqs as $type){
//var_dump($work_types_req[$type['id']][$date]);
$tempArrClirnts['quantity'.$type['id']] = 0;
}
}
$clientsVal += $val;
if(isset($summa_done[$date]) && $val > 0){
$temparr['conversion'] = round(((int)$summa_done[$date]/$val)*100, 2);
$clientsVal = $clientsVal;// - $summa_done[$date];
} else {
$temparr['conversion'] = 0;
}
$tempArrClirnts['date'] = $date;
if(isset($deletes[$date])){
$clientsVal = $clientsVal;
}
$tempArrClirnts['quantity'] = $clientsVal;
/*
$sql_c = "SELECT count(id) as total FROM clients as c WHERE 1 $bd_usl_managers and deleted = 1 and work_type like '%&quot;Аренда&quot;%' "
. "DATE_FORMAT ((SELECT `date_update` FROM `events_clients` WHERE `client_id` = c.id AND `event` = 'delete' order by id desc limit 1), '%Y-%m') = '$date'";
$q = mysql_query($sql_c);
$deletes = (int)mysql_result($q,0);
*/
$clientValRentQuantity += $work_types_rentQuantity[$date];
if(!$_POST['client_req']){
$tempArrClirnts['rentQuantity'] = $clientValRentQuantity;
/* $sql_c = "SELECT count(id) as total FROM clients as c WHERE 1 $bd_usl_managers and deleted = 1 and work_type like '%&quot;Вторичка&quot;%' "
. "DATE_FORMAT ((SELECT `date_update` FROM `events_clients` WHERE `client_id` = c.id AND `event` = 'delete' order by id desc limit 1), '%Y-%m') = '$date'";
$q = mysql_query($sql_c);
$deletes = (int)mysql_result($q,0);*/
$clientValBuyQuantity += $work_types_buyQuantity[$date];
$tempArrClirnts['buyQuantity'] = $clientValBuyQuantity;
/* $sql_c = "SELECT count(id) as total FROM clients as c WHERE 1 $bd_usl_managers and deleted = 1 and work_type like '%&quot;Новостройки&quot;%' "
. "DATE_FORMAT ((SELECT `date_update` FROM `events_clients` WHERE `client_id` = c.id AND `event` = 'delete' order by id desc limit 1), '%Y-%m') = '$date'";
$q = mysql_query($sql_c);
$deletes = (int)mysql_result($q,0); */
$clientValBuyNBQuantity += $work_types_NBQuantity[$date];
$tempArrClirnts['NBQuantity'] = $clientValBuyNBQuantity;
} else if($_POST['client_req'] == 1){
foreach($reqs as $type){
//var_dump($work_types_req[$type['id']][$date]);
$tempArrClirnts['quantity'.$type['id']] += (int)$work_types_req[$type['id']][$date];
}
}
$clientAddTemp['date'] = $date;
$clientAddTemp['quantity'] = (int)$work_types_add[$date];
if(!$_POST['client_req']){
$clientAddTemp['rentQuantity'] = (int)$work_types_rentQuantity_add[$date];
$clientAddTemp['buyQuantity'] = (int)$work_types_buyQuantity_add[$date];
$clientAddTemp['NBQuantity'] = (int)$work_types_NBQuantity_add[$date];
} else if($_POST['client_req'] == 1){
foreach($reqs as $type){
$clientAddTemp['quantity'.$type['id']] = (int)$work_types_req_add[$type['id']][$date];
}
}
$clientsAdd[] = $clientAddTemp;
$clients[] = $tempArrClirnts;
$conversions[] = $temparr;
}
//По менеджерам
$managersClients = array();
$managersClientsSdelka = array();
$managersEvents = array();
$sql_u = "SELECT `id`, `first_name`, `last_name`, `middle_name` FROM `users`";
$q_u = mysql_query($sql_u);
//var_dump($manager);
while($r_u = mysql_fetch_assoc($q_u)){
if(isset($manager[$r_u['id']])){
$mc = $manager[$r_u['id']];
$mc['category'] = trim($r_u['last_name'] . ' ' . $r_u['first_name'] . ' ' . $r_u['middle_name']);
$managersClients[] = $mc;
}
if(isset($managerSdelka[$r_u['id']])){
$ms = $managerSdelka[$r_u['id']];
$ms['category'] = trim($r_u['last_name'] . ' ' . $r_u['first_name'] . ' ' . $r_u['middle_name']);
$managersClientsSdelka[] = $ms;
}
if(isset($managerEvents[$r_u['id']])){
$me = $managerEvents[$r_u['id']];
$me['category'] = trim($r_u['last_name'] . ' ' . $r_u['first_name'] . ' ' . $r_u['middle_name']);
$managersEvents[] = $me;
}
}
//$result['work'] = (int)$row;
//array_multisort($result, SORT_DESC);
ksort($sources);
ksort($employees);
$itogResult['Funnel'] = $result;
$itogResult['Sources'] = $sources;
$itogResult['Partners'] = $employees;
$itogResult['conversion'] = $conversion;
$itogResult['summa_sdelok'] = $summaSdelok;
$itogResult['conversions'] = $conversions;
$itogResult['clients'] = $clients;
$itogResult['clientsAdd'] = $clientsAdd;
$itogResult['managersClients'] = $managersClients;
$itogResult['managersClientsSdelka'] = $managersClientsSdelka;
$itogResult['managersEvents'] = $managersEvents;
$itogResult['funnel_step'] = $funnel_step;
$itogResult['req_type'] = $req_type;
$itogResult['req_type2'] = $req_type2;
$itogResult['req_type_menedger'] = $req_type_menedger;
$itogResult['req_type_menedger_sdelka'] = $req_type_menedger_sdelka;
echo json_encode($itogResult, JSON_UNESCAPED_UNICODE);
}
if(isset($_POST['getSelectClients'])){
require_once($_SERVER['DOCUMENT_ROOT']."/config_ajax.php");
$cl = new Clients();
$usersArr = json_decode($_POST['responsible'], true);
$bd_usl_managers = '';
$usersId = $cl -> getUsersFilter($usersArr, $_POST['user_id'], $_POST['users_admin']);
foreach($usersId as $userId){
$arrIdUser[] = "who_work = $userId";
}
$bd_usl_managers = " AND (".implode(" OR ",$arrIdUser).")";
$sql = "SELECT `id`, `fio`, `email`, `phone` FROM clients WHERE 1 $bd_usl_managers and deleted <> 1 and confirm = 1 AND cancel = 0";
$q = mysql_query($sql);
?>
<select class="ms-big-add-client" multiple="">
<?php
while($r = mysql_fetch_assoc($q)){
// Маскируем контактные данные клиента, если у пользователя включено скрытие
mask_client_contacts_inplace($r);
$fio_phone = $r['phone'].' '.$r['fio'];
if(!empty($r['email'])){
$fio_phone .= ' ('.$r['email'].')';
}
?>
<option value="<?=$r['id']?>"><?=$fio_phone?></option>
<?php
}
?>
</select>
<?php
}
if(isset($_POST['event_id'])){
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
// $cl = new Clients();
$id = (int)$_POST['event_id'];
$sql = "SELECT e.id, e.comment, e.create_date, e.type, e.name, e.user_id, e.schedule_date, e.address, e.sum, e.from_id, e.calendar_view, "
. "If(e.from_id <> 0, (SELECT u.user_logo FROM users as u WHERE u.id = e.from_id), (SELECT u.user_logo FROM users as u WHERE u.id = e.user_id)) as user_logo,"
. "If(e.from_id <> 0, (SELECT u.fio FROM users as u WHERE u.id = e.from_id), (SELECT u.fio FROM users as u WHERE u.id = e.user_id)) as user_fio"
. " FROM user_client_events as e WHERE e.id = {$id}";
$rez = mysql_query($sql);
$event = mysql_fetch_assoc($rez);
$class_ev = " is__right";
$from_id = $event['user_id'];
if(!empty($event['from_id'])) $from_id = $event['from_id'];
if($_SESSION['id'] == $from_id){
$class_ev = " is__left";
}
$classMes = '';
$mainMes = $event['comment'];
$title = 'Примечание';
if ($event['type'] == 'call') {
$classMes = 'call';
$title = 'Звонок';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Позвонить ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'meet') {
$classMes = 'meeting';
$title = 'Встреча';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Встреча будет ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'show') {
$classMes = 'showing';
$title = 'Показ';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Показ будет ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'deal') {
$classMes = 'deal';
$title = 'Сделка';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Сделка будет ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'even') {
$classMes = 'even';
$title = $event['name'];
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Мероприятие состоится ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
?>
<div class="chat-block is__right">
<div class="chat-author">
<div class="pic">
<?php
if(empty($event['user_logo'])){
?>
<img src="/images/user-pic.svg"/>
<?php
} else {
?>
<img src="/photos/agency/<?=$event['user_logo']?>">
<?php
}
?>
<div class="fio_user" title="<?=$event['user_fio']?>"><?=$event['user_fio']?></div>
</div>
</div>
<div class="chat-message <?=$classMes?>">
<?php
if($event['type'] != 'comment') {
?>
<div class="chat-complete">
<div class="complete-button" data-id="<?=$event['id']?>">
<input type="checkbox" class=""/>
<div class="complete-action-button<?=($event['calendar_view'] == 1) ? ' active' : ''?>" id="groupAB__<?=$event['id']?>" title="Выполнено">
<span class="check-button-box"></span>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512px" height="512px">
<g>
<g>
<path d="M505.943,79.594c-8.077-8.077-21.172-8.077-29.249,0L167.755,388.532L35.306,256.083c-8.076-8.077-21.172-8.077-29.248,0 c-8.077,8.077-8.077,21.172,0,29.249l147.074,147.074c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.625-6.059 l323.562-323.562C514.019,100.767,514.019,87.672,505.943,79.594z" fill="#388e3c"/>
</g>
</g>
</svg>
</div>
</div>
</div>
<?php
}
?>
<div class="chat-content">
<div class="head"><span><?=$title?></span></div>
<div class="message"><?=$mainMes?></div>
<?php
if ($event['sum']) { ?>
<div class="message">Сумма сделки: <?=$event['sum']?><span class="rub">p</span></div>
<?php }
if ($event['address']) { ?>
<div class="message">Адрес: <?=$event['address']?></div>
<?php }
if(!empty($event['comment'])) {
?>
<div class="message">Комментарий: <?=$event['comment']?></div>
<?php
}
?>
<span class="time"><?=date("H:i", strtotime($event['create_date']))?></span>
<?php
if((int)$event['from_id'] == (int)$_SESSION['id']){
?>
<div class="message" style="margin-top: 10px;">
<a href="javascript:{};" class="no-border" onclick="editEvent('<?=$event['id']?>', '<?=$event['type']?>')" title="Редактировать">
<span class="simple-button settings"><i class="jw-action-icon-settings"></i></span>
</a>
<a href="javascript:{};" class="no-border" onclick="deleteEvent('<?=$event['id']?>')" title="Удалить">
<span class="simple-button delete"><i class="jw-action-icon-delete"></i></span>
</a>
</div>
<?php } ?>
</div>
</div>
<div class="clear"></div>
</div>
<?php
}
if(isset($_POST['update_event_id'])){
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
$cl = new Clients();
$id = (int)$_POST['update_event_id'];
$sql = "SELECT e.id, e.comment, e.create_date, e.type, e.name, e.user_id, e.schedule_date, e.address, e.sum, e.from_id, e.calendar_view, e.schedule_date_to, e.tracking, "
. "If(e.from_id <> 0, (SELECT u.user_logo FROM users as u WHERE u.id = e.from_id), (SELECT u.user_logo FROM users as u WHERE u.id = e.user_id)) as user_logo,"
. "If(e.from_id <> 0, (SELECT u.fio FROM users as u WHERE u.id = e.from_id), (SELECT u.fio FROM users as u WHERE u.id = e.user_id)) as user_fio"
. " FROM user_client_events as e WHERE e.id = {$id}";
$rez = mysql_query($sql);
$event = mysql_fetch_assoc($rez);
$class_ev = " is__right";
$from_id = $event['user_id'];
if(!empty($event['from_id'])) $from_id = $event['from_id'];
if($_SESSION['id'] == $from_id){
$class_ev = " is__left";
}
$classMes = '';
$mainMes = $event['comment'];
$title = 'Примечание';
if ($event['type'] == 'call') {
$classMes = 'call';
$title = 'Звонок';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Позвонить ";
if( $event['tracking'] == 1){
$mainMes .= "c ".date('d.m.Y H:i', strtotime($event['schedule_date_to']))." <br>по ".date('d.m.Y H:i', strtotime($event['schedule_date']));
} else {
$mainMes .= $d." ".getRusMonth($m)." ".$y." в ".date("H:i", strtotime($event['schedule_date']));
}
//$mainMes = "Позвонить ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'meet') {
$classMes = 'meeting';
$title = 'Встреча';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Встреча будет ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'show') {
$classMes = 'showing';
$title = 'Показ';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Показ будет ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'deal') {
$classMes = 'deal';
$title = 'Сделка';
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Сделка будет ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
if ($event['type'] == 'even') {
$classMes = 'even';
$title = $event['name'];
$date = date("d.m.Y", strtotime($event['schedule_date']));
list($d, $m, $y) = explode(".", $date);
$mainMes = "Мероприятие состоится ".$d." ".getRusMonth($m)." ".$y." в ".date('H:i', strtotime($event['schedule_date']));
}
?>
<div class="head"><span><?=$title?></span></div>
<div class="message"><?=$mainMes?></div>
<?php
if ($event['sum']) { ?>
<div class="message">Сумма сделки: <?=$event['sum']?><span class="rub">p</span></div>
<?php }
if ($event['address']) { ?>
<div class="message">Адрес: <?=$event['address']?></div>
<?php }
if(!empty($event['comment'])) {
?>
<div class="message">Комментарий: <?=$event['comment']?></div>
<?php
}
?>
<span class="time"><?=date("H:i", strtotime($event['create_date']))?></span>
<?php if($_SESSION['id'] == $event['from_id']){ ?>
<div class="message" style="margin-top: 10px;">
<a href="javascript:{};" class="no-border" onclick="editEvent('<?=$event['id']?>', '<?=$event['type']?>')" title="Редактировать">
<span class="simple-button settings"><i class="jw-action-icon-settings"></i></span>
</a>
<a href="javascript:{};" class="no-border" onclick="deleteEvent('<?=$event['id']?>')" title="Удалить">
<span class="simple-button delete"><i class="jw-action-icon-delete"></i></span>
</a>
</div>
<?php }
}