Старт

This commit is contained in:
2023-11-07 19:51:49 +06:00
commit 86542a157f
5002 changed files with 199551 additions and 0 deletions

196
monitoring/messages.php Normal file
View File

@ -0,0 +1,196 @@
<?php
//Вернуть в JSON кол-во необработанных сообщений (не присвоенных ни одному пользователю)
//И всё другое связаное с оброботкой сообщений для пользователя
@session_start();
require_once("./config.php");
$db=connectToDB();
$db->exec('SET NAMES utf8');
$db->exec("SET time_zone = '+00:00'");
$fn=0;
if(isset($_GET['fn'])) { $fn=$_GET['fn']; }
if($fn=='1') //Вернуть кол-во не присвоеных пользователю сообщений
{
$m_all_count=0; //Количество не присвоенных никому сообщений.
$m_user_count=0; //Количество не обработаны сообщений для текущего пользователя.
$sql = 'SELECT count(*) FROM messages m join companies c on m.company_id=c.id WHERE m.del=false and m.id NOT IN (SELECT mu.message_id FROM messagesusers mu WHERE del=false) and c.description=\'TRANSIT\';';
try {
$res = $db->query($sql);
} catch (Exception $e) {
echo $e->getMessage();
$res = null;
}
while ($row = $res->fetch(PDO::FETCH_NUM))
{
$m_all_count = $row[0];
}
if($_SESSION['USER_ID']!='')
{
$sql = "SELECT COUNT(*) FROM monitoring.messagesusers WHERE user_id=".$_SESSION['USER_ID']." AND del=FALSE and date_read IS null";
try {
$res = $db->query($sql);
} catch (Exception $e) {
echo $e->getMessage();
$res = null;
}
while ($row = $res->fetch(PDO::FETCH_NUM))
{
$m_user_count = $row[0];
}
}
$json ='';
header('Content-Type: application/json');
$json .='{';
$json .='"count":'.$m_all_count.",\n";
$json .='"user":'.$m_user_count."\n";
$json .='}';
echo $json;
exit;
}if($fn=='2') //Присвоить последнее сообщение пользователю и вернуть его ID
{
$id='';
$errorCode='0';
$errorMessage='';
$sql = 'SELECT m.id FROM messages m join companies c on m.company_id=c.id WHERE m.del=false and m.id NOT IN (SELECT mu.message_id FROM messagesusers mu WHERE del=false) and c.description=\'TRANSIT\' ORDER BY m.priority desc, m.date_create LIMIT 1';
try {
$res = $db->query($sql);
} catch (Exception $e) {
$errorCode='1';
$errorMessage = $e->getMessage();
$res = null;
}
if($res != null)
{
if ($row = $res->fetch(PDO::FETCH_NUM))
{
//Присваиваю текущему пользователю
$sql="insert into messagesusers(message_id,user_id,date_create)values(".$row[0].",".$_SESSION['USER_ID'].",now())";
try {
$res = $db->query($sql);
} catch (Exception $e) {
$errorCode='1';
$errorMessage = $e->getMessage();
$res = null;
}
$id=$row[0];
}
}
header('Content-Type: application/json');
echo '{"errorCode":'.$errorCode.',"errorMessage":"'.$errorMessage.'","id":"'.$id.'"}';
exit;
}if($fn=='3') //Вернуть данные пользователю в соответствии со значением фильтра
{
$status='';
if(isset($_GET['status'])) { $status=$_GET['status']; }
if($status=='0'){ //Не отработанные
$sql='SELECT mu.id,m.subject,m.text,m.date_create FROM messagesusers mu JOIN messages m ON m.id=mu.message_id WHERE mu.del=FALSE AND m.del=FALSE and mu.user_id='.$_SESSION['USER_ID'].' AND mu.date_read IS null';
}
if($status=='1'){ //Отработанные
$sql='SELECT mu.id,m.subject,m.text,m.date_create FROM messagesusers mu JOIN messages m ON m.id=mu.message_id WHERE mu.del=FALSE AND m.del=FALSE and mu.user_id='.$_SESSION['USER_ID'].' AND mu.date_read > NOW() - INTERVAL 30 DAY';
}
try {
$res = $db->query($sql);
} catch (Exception $e) {
//echo $e->getMessage();
$res = null;
}
$json ='';
$json .='[';
if($res != null)
{
while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{
$json .='{';
$json .='"id":'.$row['id'].',';
$json .='"subject":"'.str_replace("\n"," ",addslashes($row['subject'])).'",';
$json .='"text":"'.str_replace("\n"," ",addslashes($row['text'])).'"';
$json .="},";
}
if($json[strlen($json)-1]==','){
$json = substr($json, 0, -1);
}
}
$json .=']';
header('Content-Type: application/json');
echo $json;
exit;
}if($fn=='4') //Одна запись для подтверждения
{
//$status='';
//if(isset($_GET['status'])) { $status=$_GET['status']; }
$sql='SELECT mu.id,m.subject,m.text,m.date_create FROM messagesusers mu JOIN messages m ON m.id=mu.message_id WHERE mu.del=FALSE AND m.del=FALSE and mu.user_id='.$_SESSION['USER_ID'].' AND mu.date_read IS null';
try {
$res = $db->query($sql);
} catch (Exception $e) {
//echo $e->getMessage();
$res = null;
}
$json ='';
$json .='{';
if($res != null)
{
if($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов
{
$json .='"id":'.$row['id'].',';
$json .='"subject":"'.str_replace("\n"," ",addslashes($row['subject'])).'",';
$json .='"text":"'.str_replace("\n"," ",addslashes($row['text'])).'"';
}
//$json = substr($json, 0, -2);
}
$json .='}';
header('Content-Type: application/json');
echo $json;
exit;
}if($fn=='5') //Отмечаем сообщение как обработанное
{
$errorCode='0';
$errorMessage='';
if(!isset($HTTP_RAW_POST_DATA))
{ $HTTP_RAW_POST_DATA = file_get_contents("php://input");
}
$object = json_decode($HTTP_RAW_POST_DATA);
//Сохраняю текст и присваиваю время чтения
$sql="update messagesusers set date_read=now(), description = :description where id = ".$object->id;
$stmt = $db->prepare($sql);
$stmt->bindParam(':description', $object->description, PDO::PARAM_STR);
try
{
$res = $stmt->execute();
} catch (Exception $e)
{
$errorCode='1';
$errorMessage = $e->getMessage();
}
header('Content-Type: application/json');
echo '{"errorCode":'.$errorCode.',"errorMessage":"'.$errorMessage.'"}';
exit;
}else
{
header('Content-Type: application/json');
echo '{"error":1}';
}