Joywork/ajax/getEventsClient.php

146 lines
6.2 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?php
require_once($_SERVER['DOCUMENT_ROOT']."/config_ajax.php");
if(isset($_GET['user_id']) && is_numeric($_GET['user_id'])) {
$user_id = (int)$_GET['user_id'];
$result = array();
$sql = "SELECT * FROM events_clients WHERE from_id = ".$user_id." AND `read` = 0 AND (req_id>0 or client_id>0)";
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$sql_in = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `agency`, `manager` FROM `users` WHERE `id` = '".$r['user_id']."'";
$q_in = mysql_query($sql_in);
$r_in = mysql_fetch_assoc($q_in);
$post = "Сотрудник ";
if($r_in['agency'] == 1)
$post = "Агентство ";
else if($r_in['manager'] == 1)
$post = "Менеджер ";
$sql_cl = "SELECT `fio` FROM `clients` WHERE `id` = ".$r['client_id'];
if($r['req_id'] > 0){
$sql_cl = "SELECT `name` as `fio`, object_id, type_id, `reservation_updated_at` FROM `requisitions` WHERE `id` = ".$r['req_id'];
}
$q_cl = mysql_query($sql_cl);
$r_cl = mysql_fetch_assoc($q_cl);
//$result[] = array('id' => $r['id'], 'from' => $r['from_id'],'post' => $post, 'fio' => $r_in['fio'], 'in' => $r['user_id'], 'fio_client' => $r_cl['fio'], 'client_id' => $r['client_id']);
$tr = 0;
$objectString = '';
$objectNum = 0;
$type_req = 0;
$agency_fio = trim($r_in['last_name'] . ' ' . $r_in['first_name'] . ' ' . $r_in['middle_name']);
if($r_in['agency'] == 1) {
$agency_fio = $r_in['agency_name'];
}
if($r['event'] == 'transmitted_parallel'){
$tr = 1;
} else {
if($r['req_id'] > 0 && $r_cl['object_id'] > 0){
$objectNum++;
$sql_obj = "SELECT nazv FROM `objects` WHERE id= $r_cl[object_id]";
$q_obj = mysql_query($sql_obj);
$r_obj = mysql_fetch_assoc($q_obj);
$type_req = $r_cl['type_id'];
$objectString = $objectString . ($objectNum > 1 ? ", " : "") . $r_obj['nazv'];
} else {
$sql_client = "SELECT objects FROM clients WHERE id=$r[client_id]";
$q_client = mysql_query($sql_client);
$r_client = mysql_fetch_assoc($q_client);
$objects = json_decode(html_entity_decode($r_client['objects']), true);
foreach($objects as $object){
$objectNum++;
$sql_obj = "SELECT nazv FROM `objects` WHERE id= $object";
$q_obj = mysql_query($sql_obj);
$r_obj = mysql_fetch_assoc($q_obj);
$objectString = $objectString . ($objectNum > 1 ? ", " : "") . $r_obj['nazv'];
}
}
}
$objText = '';
if($objectNum > 0) {
if($objectNum > 1){
$objText = ' и объекты ' . $objectString;
} else {
$objText = ' и объект ' . $objectString;
}
if($r['req_id'] > 0 && $type_req == 4){
$objText = ' по объекту ' . $objectString;
}
}
/**
* Complex status reservation ID ($csr_id)
*/
$csr_id = null;
$event_type = preg_split("/_res_|ext_/", $r['event']);
$event_type_status = (string)$event_type[1];
if (strpos($r['event'], 'extension_reservation_') !== false)
{
$csr_id = explode('extension_reservation_', $r['event'])[1];
}
if ($csr_id)
{
/**
* Complex status reservation ($csr)
*/
$complexStatus = new ComplexStatus;
$csr = $complexStatus::getReservationById($csr_id);
$now = new DateTime("now", new \DateTimeZone("Europe/Moscow"));
$reservation_updated_at = new DateTime($r_cl['reservation_updated_at']);
$reservation_updated_at = $reservation_updated_at->modify('+' . $csr['booking_day'] . ' day');
$reservation_updated_at = $reservation_updated_at->modify('+' . $csr['booking_hour'] . ' hour');
if ($now >= $reservation_updated_at) {
$result['extension_reservations'][] = array(
'id' => (int)$r['id'],
'in' => (int)$r['user_id'],
'tr' => $tr,
'fio' => $agency_fio,
'from' => (int)$r['from_id'],
'post' => $post,
'req_id' => (int)$r['req_id'],
'dop_text' => function_exists('mask_text_for_hide_user') ? mask_text_for_hide_user($r['dop_text']) : $r['dop_text'],
'client_id' => (int)$r['client_id'],
'specify_comment_confirm' => (bool)$csr['specify_comment_confirm'],
'specify_comment_unconfirm' => (bool)$csr['specify_comment_unconfirm']
);
}
}
else if ($event_type_status === 'confirming' || $event_type_status === 'unconfirming')
{
$result['confirm_and_unconfirm_extension_reservations'][] = array(
'id' => (int)$r['id'],
'in' => (int)$r['user_id'],
'tr' => $tr,
'fio' => $agency_fio,
'from' => (int)$r['from_id'],
'post' => $post,
'req_id' => (int)$r['req_id'],
'dop_text' => function_exists('mask_text_for_hide_user') ? mask_text_for_hide_user($r['dop_text']) : $r['dop_text'],
'client_id' => (int)$r['client_id'],
);
}
else
{
$result['others'][] = array('id' => $r['id'], 'from' => $r['from_id'], 'post' => $post, 'fio' => $agency_fio, 'in' => $r['user_id'],
'fio_client' => $r_cl['fio'], 'client_id' => $r['client_id'], 'req_id'=>$r['req_id'], 'tr'=>$tr, 'objects'=> $objText);
}
}
$result['total'] = array_sum(array_map("count", $result));
if(empty($result)) echo 0;
else echo json_encode($result);
}