Joywork/ajax/getCharts.php
2026-05-22 21:21:54 +03:00

1648 lines
73 KiB
PHP
Raw Permalink 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
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 }
}