Refactor Talk and Gestion services to use user identifiers for talk room creation and notifications
This commit is contained in:
parent
903eed7cb9
commit
1727db1cc2
@ -153,7 +153,7 @@ class TalkDb {
|
|||||||
|
|
||||||
$rooms = $this->execSQLNoJsonReturn(
|
$rooms = $this->execSQLNoJsonReturn(
|
||||||
$sql,
|
$sql,
|
||||||
[$names['createdByUser'],$names['createdByAdmin']]);
|
[$names['target'],$names['sender']]);
|
||||||
|
|
||||||
if(!empty($rooms)){
|
if(!empty($rooms)){
|
||||||
return $rooms[0];
|
return $rooms[0];
|
||||||
@ -161,13 +161,13 @@ class TalkDb {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createDevisTalkRoomAndReturnDevisTalkRoom($idNextCloud,$token){
|
public function createDevisTalkRoomAndReturnDevisTalkRoom($targetUser,$senderUser,$token){
|
||||||
$roomName = '["'.$idNextCloud.'","'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"]';
|
$roomName = '["'.$targetUser.'","'.$senderUser.'"]';
|
||||||
$this->createDevisTalkRoom($roomName,$token);
|
$this->createDevisTalkRoom($roomName,$token);
|
||||||
$room = $this->getDevisTalkRoomByName($roomName);
|
$room = $this->getDevisTalkRoomByName($roomName);
|
||||||
$attendees = [
|
$attendees = [
|
||||||
$idNextCloud,
|
$targetUser,
|
||||||
BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD
|
$senderUser
|
||||||
];
|
];
|
||||||
$this->createDevisTalkRoomAttendeesByActors($attendees,$room['id']);
|
$this->createDevisTalkRoomAttendeesByActors($attendees,$room['id']);
|
||||||
return $room;
|
return $room;
|
||||||
|
|||||||
@ -37,6 +37,7 @@ use OCA\Gestion\Service\Order\OrderPdfService;
|
|||||||
use OCP\DB\Exception;
|
use OCP\DB\Exception;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use OCA\Gestion\Helpers\VCalendarHelpers;
|
use OCA\Gestion\Helpers\VCalendarHelpers;
|
||||||
|
use OCP\IUserSession;
|
||||||
|
|
||||||
class GestionService {
|
class GestionService {
|
||||||
/** @var Bdd */
|
/** @var Bdd */
|
||||||
@ -53,19 +54,27 @@ class GestionService {
|
|||||||
private $orderPdfService;
|
private $orderPdfService;
|
||||||
private $devisPdfService;
|
private $devisPdfService;
|
||||||
|
|
||||||
|
private $userSession;
|
||||||
|
|
||||||
|
private string $userConnectedUuid;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Bdd $gestionBdd,
|
Bdd $gestionBdd,
|
||||||
OrderBdd $orderBdd,
|
OrderBdd $orderBdd,
|
||||||
LoggerInterface $logger,
|
LoggerInterface $logger,
|
||||||
OrderPdfService $orderPdfService,
|
OrderPdfService $orderPdfService,
|
||||||
DevisPdfService $devisPdfService,
|
DevisPdfService $devisPdfService,
|
||||||
TalkService $talkService) {
|
TalkService $talkService,
|
||||||
|
IUserSession $userSession
|
||||||
|
) {
|
||||||
$this->orderBdd = $orderBdd;
|
$this->orderBdd = $orderBdd;
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
$this->gestionBdd = $gestionBdd;
|
$this->gestionBdd = $gestionBdd;
|
||||||
$this->orderPdfService = $orderPdfService;
|
$this->orderPdfService = $orderPdfService;
|
||||||
$this->devisPdfService = $devisPdfService;
|
$this->devisPdfService = $devisPdfService;
|
||||||
$this->talkService = $talkService;
|
$this->talkService = $talkService;
|
||||||
|
$this->userSession = $userSession;
|
||||||
|
$this->userConnectedUuid = $userSession->getUser()?->getUID() ?? BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function GetCalendarSummaryFromVCalendarString(string $vCalendarString): string
|
private function GetCalendarSummaryFromVCalendarString(string $vCalendarString): string
|
||||||
@ -194,15 +203,13 @@ class GestionService {
|
|||||||
$order = $this->orderBdd->getOrderByDevisId($devisId);
|
$order = $this->orderBdd->getOrderByDevisId($devisId);
|
||||||
$this->logger->debug(json_encode($order));
|
$this->logger->debug(json_encode($order));
|
||||||
if($order != null){
|
if($order != null){
|
||||||
$this->orderPdfService->generateOrderPdfByOrderId($order['id'],BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD);
|
$this->orderPdfService->generateOrderPdfByOrderId($order['id'],$this->userConnectedUuid);
|
||||||
$this->orderPdfService->generateOrderPdfByOrderId($order['id'],BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devisId,$userName);
|
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devisId,$userName);
|
||||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName);
|
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName,$this->userConnectedUuid);
|
||||||
$this->devisPdfService->generateDevisPdfByDevisId($devisId,BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD);
|
$this->devisPdfService->generateDevisPdfByDevisId($devisId,$this->userConnectedUuid);
|
||||||
$this->devisPdfService->generateDevisPdfByDevisId($devisId,BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD);
|
|
||||||
$this->gestionBdd->createDevisTrajetFromVCalendar($devisId,$userName);
|
$this->gestionBdd->createDevisTrajetFromVCalendar($devisId,$userName);
|
||||||
}
|
}
|
||||||
catch(Exception $e){
|
catch(Exception $e){
|
||||||
@ -321,10 +328,9 @@ class GestionService {
|
|||||||
$this->UpdateDevisDataByVCalendarString($devis,$vCalendarString);
|
$this->UpdateDevisDataByVCalendarString($devis,$vCalendarString);
|
||||||
$userName = $this->GetThanatoNameFromVCalendarString($vCalendarString);
|
$userName = $this->GetThanatoNameFromVCalendarString($vCalendarString);
|
||||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devis['id'],$userName);
|
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devis['id'],$userName);
|
||||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName);
|
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName,$this->userConnectedUuid);
|
||||||
}
|
}
|
||||||
$this->devisPdfService->generateDevisPdfByDevisId($devis['id'],BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD);
|
$this->devisPdfService->generateDevisPdfByDevisId($devis['id'],$this->userConnectedUuid);
|
||||||
$this->devisPdfService->generateDevisPdfByDevisId($devis['id'],BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch(Exception $e){
|
catch(Exception $e){
|
||||||
|
|||||||
@ -48,12 +48,12 @@ class TalkService {
|
|||||||
$this->talkDb = $talkDb;
|
$this->talkDb = $talkDb;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getUserDevisTalkRoomNames($idNextCloud){
|
private function getUserDevisTalkRoomNames($target ,$senderUser){
|
||||||
$roomNamesCreatedByUser = '["'.$idNextCloud.'","'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"]';
|
$roomNamesCreatedBytargetUser = '["'.$target.'","'.$senderUser.'"]';
|
||||||
$roomNamesCreatedByAdmin = '["'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'","'.$idNextCloud.'"]';
|
$roomNamesCreatedBySenderUser = '["'.$senderUser.'","'.$target.'"]';
|
||||||
return [
|
return [
|
||||||
"createdByUser" => $roomNamesCreatedByUser,
|
"target" => $roomNamesCreatedBytargetUser,
|
||||||
"createdByAdmin" => $roomNamesCreatedByAdmin
|
"sender" => $roomNamesCreatedBySenderUser
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,35 +68,34 @@ class TalkService {
|
|||||||
return $randomToken;
|
return $randomToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getNotificationsSubjectsParameters(){
|
private function getNotificationsSubjectsParameters(string $senderUser){
|
||||||
return '{"userType":"users","userId":"'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"}';
|
return '{"userType":"users","userId":"'.$senderUser.'"}';
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getNotificationsMessageParameters($commentId){
|
private function getNotificationsMessageParameters($commentId){
|
||||||
return '{"commentId":"'.$commentId.'"}';
|
return '{"commentId":"'.$commentId.'"}';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function sendDevisTalkNotifications(string $message,string $idNextcloud){
|
public function sendDevisTalkNotifications(string $message,string $targetUser ,string $senderUser){
|
||||||
if($idNextcloud === BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD || $idNextcloud === BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD){
|
$senderAndTargetIsTheSameUser = $targetUser == $senderUser;
|
||||||
return true;
|
$senderUser = $senderAndTargetIsTheSameUser ? BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD : $senderUser;
|
||||||
}
|
$roomNames = $this->getUserDevisTalkRoomNames($targetUser , $senderUser);
|
||||||
$roomNames = $this->getUserDevisTalkRoomNames($idNextcloud);
|
|
||||||
$room = $this->talkDb->getDevisTalkRoomByNames($roomNames);
|
$room = $this->talkDb->getDevisTalkRoomByNames($roomNames);
|
||||||
if($room == null){
|
if($room == null){
|
||||||
$roomToken = $this->generateTalkRandomToken();
|
$roomToken = $this->generateTalkRandomToken();
|
||||||
$room = $this->talkDb->createDevisTalkRoomAndReturnDevisTalkRoom($idNextcloud,$roomToken);
|
$room = $this->talkDb->createDevisTalkRoomAndReturnDevisTalkRoom($targetUser,$senderUser, $roomToken);
|
||||||
$initialMessage = $this->talkDb->setDevisTalkRoomInitialMessageAndReturnMessage($room['id'],$idNextcloud);
|
$initialMessage = $this->talkDb->setDevisTalkRoomInitialMessageAndReturnMessage($room['id'],$targetUser);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$roomToken = $room['token'];
|
$roomToken = $room['token'];
|
||||||
}
|
}
|
||||||
$devisMessage = $this->talkDb->createDevisTalkRoomMessageAndReturnMessage($room['id'],$message);
|
$devisMessage = $this->talkDb->createDevisTalkRoomMessageAndReturnMessage($room['id'],$message);
|
||||||
$this->talkDb->updateRoomLastMessage($room['id'],$devisMessage['id']);
|
$this->talkDb->updateRoomLastMessage($room['id'],$devisMessage['id']);
|
||||||
$this->talkDb->setAttendeeLastReadMessage($room['id'],$devisMessage['id'],BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD);
|
$this->talkDb->setAttendeeLastReadMessage($room['id'],$devisMessage['id'],$senderUser);
|
||||||
//send notifications
|
//send notifications
|
||||||
$notificationsSubjectsParameters = $this->getNotificationsSubjectsParameters();
|
$notificationsSubjectsParameters = $this->getNotificationsSubjectsParameters($senderUser);
|
||||||
$notificationsMessageParameters = $this->getNotificationsMessageParameters($devisMessage['id']);
|
$notificationsMessageParameters = $this->getNotificationsMessageParameters($devisMessage['id']);
|
||||||
$this->talkDb->sendAttendeeNotifications($idNextcloud,$roomToken,$notificationsSubjectsParameters,$notificationsMessageParameters);
|
$this->talkDb->sendAttendeeNotifications($targetUser,$roomToken,$notificationsSubjectsParameters,$notificationsMessageParameters);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user