Merge branch 'fixes/fix-update-agenda-devis' into staging
This commit is contained in:
commit
0d3c5a1dea
@ -3787,7 +3787,7 @@ class Bdd {
|
||||
if(empty($devisProducts)){
|
||||
return "";
|
||||
}
|
||||
$productMessage = ". ACTE A FAIRE : ";
|
||||
$productMessage = "ACTE A FAIRE : ";
|
||||
foreach($devisProducts as $product){
|
||||
$productMessage.= html_entity_decode($product->produit_reference).", ";
|
||||
}
|
||||
@ -3797,7 +3797,7 @@ class Bdd {
|
||||
}
|
||||
|
||||
private function getDevisTalkRoomClientContent($clientPrenom){
|
||||
$message = ". Pour PF: ";
|
||||
$message = "Pour PF: ";
|
||||
$clientNameContent = "aucun";
|
||||
$clientPrenomIsSet = $clientPrenom != null && $clientPrenom != "" && $clientPrenom != "-";
|
||||
if($clientPrenomIsSet){
|
||||
@ -3816,20 +3816,25 @@ class Bdd {
|
||||
$devisDate = new Datetime($devis->date);
|
||||
$devisDate = $devisDate->format('d/m/Y');
|
||||
$message = "NOUVELLE INTERVENTION: ";
|
||||
$message .= html_entity_decode($devis->nom_defunt) . ' ';
|
||||
$message .= 'le '.$devisDate. ' ';
|
||||
$message .= html_entity_decode($devis->nom_defunt);
|
||||
$message .= '
|
||||
le '.$devisDate;
|
||||
$message .= 'à '.$devis->startTime. ' ';
|
||||
$message .= 'à '.html_entity_decode($devis->lieu). ' '. html_entity_decode($devis->adresse_soin);
|
||||
$message .= '
|
||||
à '.html_entity_decode($devis->lieu). ' '. html_entity_decode($devis->adresse_soin);
|
||||
|
||||
$clientMessageContent = $this->getDevisTalkRoomClientContent($devis->prenom);
|
||||
$message .= $clientMessageContent;
|
||||
$message .= '
|
||||
'.$clientMessageContent;
|
||||
$productMessage = $this->getDevisTalkRoomProductSectionMessage($devis->products);
|
||||
$message .= $productMessage;
|
||||
$message .= '
|
||||
'.$productMessage;
|
||||
$comment = "aucun";
|
||||
if(strtolower($devis->comment) != "commentaire" && $devis->comment != ""){
|
||||
$comment = html_entity_decode($devis->comment);
|
||||
}
|
||||
$message .= ". COMMENTAIRES: ".$comment.". ";
|
||||
$message .= "
|
||||
COMMENTAIRES: ".$comment;
|
||||
$locationCodes = [
|
||||
"Code portail" => $devis->portal_code,
|
||||
"Code alarme" => $devis->alarm_code,
|
||||
@ -3844,7 +3849,8 @@ class Bdd {
|
||||
$locationCodeMessageContent .= $label. ": ".$value.". ";
|
||||
}
|
||||
$locationCodeMessageContent = trim($locationCodeMessageContent);
|
||||
$message .= $locationCodeMessageContent;
|
||||
$message .= '
|
||||
'.$locationCodeMessageContent;
|
||||
return $message;
|
||||
}
|
||||
|
||||
@ -3858,6 +3864,8 @@ class Bdd {
|
||||
devis.id_defunt as defunt_id,
|
||||
devis.num,
|
||||
devis.comment,
|
||||
devis.mentions,
|
||||
devis.date,
|
||||
devis.id_lieu as lieu_id,
|
||||
devis.id_client as client_id,
|
||||
defunt.nom as defunt_nom
|
||||
@ -3949,6 +3957,13 @@ class Bdd {
|
||||
}
|
||||
}
|
||||
|
||||
public function updateDevisDate($devisId,$requestedDate){
|
||||
$sql= "UPDATE ".$this->tableprefix."devis as devis
|
||||
SET devis.date = ?
|
||||
WHERE devis.id = ?";
|
||||
$this->execSQLNoData($sql,[$requestedDate,$devisId]);
|
||||
}
|
||||
|
||||
public function deleteDevisProduit($devisProductId){
|
||||
$sql = "DELETE FROM ".$this->tableprefix."produit_devis WHERE id = ?;";
|
||||
$this->execSQLNoData($sql, array($devisProductId));
|
||||
|
||||
@ -153,7 +153,7 @@ class TalkDb {
|
||||
|
||||
$rooms = $this->execSQLNoJsonReturn(
|
||||
$sql,
|
||||
[$names['createdByUser'],$names['createdByAdmin']]);
|
||||
[$names['target'],$names['sender']]);
|
||||
|
||||
if(!empty($rooms)){
|
||||
return $rooms[0];
|
||||
@ -161,13 +161,13 @@ class TalkDb {
|
||||
return null;
|
||||
}
|
||||
|
||||
public function createDevisTalkRoomAndReturnDevisTalkRoom($idNextCloud,$token){
|
||||
$roomName = '["'.$idNextCloud.'","'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"]';
|
||||
public function createDevisTalkRoomAndReturnDevisTalkRoom($targetUser,$senderUser,$token){
|
||||
$roomName = '["'.$targetUser.'","'.$senderUser.'"]';
|
||||
$this->createDevisTalkRoom($roomName,$token);
|
||||
$room = $this->getDevisTalkRoomByName($roomName);
|
||||
$attendees = [
|
||||
$idNextCloud,
|
||||
BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD
|
||||
$targetUser,
|
||||
$senderUser
|
||||
];
|
||||
$this->createDevisTalkRoomAttendeesByActors($attendees,$room['id']);
|
||||
return $room;
|
||||
|
||||
@ -26,9 +26,11 @@ declare(strict_types=1);
|
||||
|
||||
namespace OCA\Gestion\Service;
|
||||
|
||||
use OCA\Gestion\Constants\BddConstant;
|
||||
use OCA\Gestion\Constants\DevisMentionConstant;
|
||||
use OCA\Gestion\Constants\VCalendarPropertyConstant;
|
||||
use OCA\Gestion\Db\Bdd;
|
||||
use OCP\IUserSession;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use OCA\Gestion\Helpers\VCalendarHelpers;
|
||||
|
||||
@ -42,13 +44,22 @@ class GestionService {
|
||||
/** @var TalkService */
|
||||
private $talkService;
|
||||
|
||||
private $userConnectedUuid;
|
||||
|
||||
public function __construct(
|
||||
Bdd $gestionBdd,
|
||||
LoggerInterface $logger,
|
||||
TalkService $talkService) {
|
||||
TalkService $talkService,
|
||||
IUserSession $userSession) {
|
||||
$this->logger = $logger;
|
||||
$this->gestionBdd = $gestionBdd;
|
||||
$this->talkService = $talkService;
|
||||
try{
|
||||
$this->userConnectedUuid = $userSession->getUser()->getUID();
|
||||
}
|
||||
catch(Exception){
|
||||
$this->userConnectedUuid = BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD;
|
||||
}
|
||||
}
|
||||
|
||||
private function GetIsCalendarPendingFromVCalendarString(string $vCalendarString): bool{
|
||||
@ -82,24 +93,13 @@ class GestionService {
|
||||
private function GetThanatoIdFromVCalendarString(string $vCalendarString)
|
||||
{
|
||||
$thanatoId = 0;
|
||||
$thanatoNames = $this->GetAttendeesNameFromVCalendarString($vCalendarString);
|
||||
if(count($thanatoNames) > 0){
|
||||
$thanatoName = $thanatoNames[0];
|
||||
$thanatoIdFromDb = $this->gestionBdd->getThanatoIdByUserUuid($thanatoName);
|
||||
$organizerName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
||||
if($organizerName != null){
|
||||
$thanatoIdFromDb = $this->gestionBdd->getThanatoIdByUserUuid($organizerName);
|
||||
if($thanatoIdFromDb != null){
|
||||
$thanatoId = $thanatoIdFromDb;
|
||||
}
|
||||
}
|
||||
else{
|
||||
//get from calendar object
|
||||
$organizerName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
||||
if($organizerName != null){
|
||||
$thanatoIdFromDb = $this->gestionBdd->getThanatoIdByUserUuid($organizerName);
|
||||
if($thanatoIdFromDb != null){
|
||||
$thanatoId = $thanatoIdFromDb;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $thanatoId;
|
||||
}
|
||||
|
||||
@ -170,6 +170,8 @@ class GestionService {
|
||||
$requestedDevisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
||||
$this->gestionBdd->updateDevisComment($devis['id'],$requestedDevisComment,$devis['comment']);
|
||||
|
||||
$requestedDevisDate = $this->GetCalendarDateFromVCalendarString($vCalendarString);
|
||||
$this->gestionBdd->updateDevisDate($devis['id'],$requestedDevisDate);
|
||||
$articlesValue = $this->GetArticlesNameFromVCalendarString($vCalendarString);
|
||||
if(!empty($articlesValue)){
|
||||
$articleIds = $this->gestionBdd->getArticleIdsByArticleReferences($articlesValue);
|
||||
@ -184,6 +186,7 @@ class GestionService {
|
||||
$requestedDevisComment = $this->GetDevisCommentFromVCalendarString($vCalendarString);
|
||||
$requestedArticleReferences = $this->GetArticlesNameFromVCalendarString($vCalendarString);
|
||||
$requestedArticleIds = $this->gestionBdd->getArticleIdsByArticleReferences($requestedArticleReferences);
|
||||
$requestedDevisDate = $this->GetCalendarDateFromVCalendarString($vCalendarString);
|
||||
$articleDevis = $this->gestionBdd->getProduitDevisByDevisId($devis['id']);
|
||||
$articleDevisIds = [];
|
||||
foreach($articleDevis as $currentArticleDevis){
|
||||
@ -197,7 +200,8 @@ class GestionService {
|
||||
$devis['client_id'] == $requestedClientId &&
|
||||
$devis['lieu_id'] == $requestLocationId &&
|
||||
$devis['comment'] == $requestedDevisComment &&
|
||||
$requestedArticleIds == $articleDevisIds;
|
||||
$requestedArticleIds == $articleDevisIds &&
|
||||
$devis['date'] == $requestedDevisDate;
|
||||
}
|
||||
|
||||
public function HandleUpdatedCalendarObject(string $vCalendarString){
|
||||
@ -214,15 +218,17 @@ class GestionService {
|
||||
$calendarUuid = $this->GetCalendarUuidFromVCalendarString($vCalendarString);
|
||||
$devis = $this->gestionBdd->getDevisByCalendarUuid($calendarUuid);
|
||||
if($devis != null){
|
||||
$this->gestionBdd->updateDevisMention($devis['id'],DevisMentionConstant::NEW);
|
||||
$isDevisAlreadyUpdated = $this->CheckIfDevisIsAlreadyUpdated($devis,$vCalendarString);
|
||||
if($isDevisAlreadyUpdated){
|
||||
return true;
|
||||
}
|
||||
$devisIsAlreadyFactured = $devis['mentions'] == DevisMentionConstant::FACTURED || $devis['mentions'] == DevisMentionConstant::FACTURED_FORMATTED;
|
||||
$this->UpdateDevisDataByVCalendarString($devis,$vCalendarString);
|
||||
$userName = $this->GetThanatoNameFromVCalendarString($vCalendarString);
|
||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devis['id'],$userName);
|
||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName);
|
||||
if($devisIsAlreadyFactured == false){
|
||||
$userName = $this->GetThanatoNameFromVCalendarString($vCalendarString);
|
||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devis['id'],$userName);
|
||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName,$this->userConnectedUuid);
|
||||
}
|
||||
}
|
||||
else{
|
||||
//update from calendar leave or calendar pending to calendar devis
|
||||
@ -280,22 +286,14 @@ class GestionService {
|
||||
$articleIds = $this->gestionBdd->getArticleIdsByArticleReferences($articlesValue);
|
||||
$this->gestionBdd->insertDevisArticleFromDevisIdAndArticlesIdArray($devisId, $articleIds);
|
||||
}
|
||||
$this->gestionBdd->createDevisTrajetFromVCalendar($devisId,$userName);
|
||||
$devisTalkMessage = $this->gestionBdd->getDevisTalkRoomMessage($devisId,$userName);
|
||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName);
|
||||
$this->talkService->sendDevisTalkNotifications($devisTalkMessage,$userName,$this->userConnectedUuid);
|
||||
$this->gestionBdd->createDevisTrajetFromVCalendar($devisId,$userName);
|
||||
}
|
||||
|
||||
private function GetThanatoNameFromVCalendarString($vCalendarString){
|
||||
$thanatoName = null;
|
||||
$thanatoNames = $this->GetAttendeesNameFromVCalendarString($vCalendarString);
|
||||
if(count($thanatoNames) > 0){
|
||||
$thanatoName = $thanatoNames[0];
|
||||
}
|
||||
else{
|
||||
//get from calendar object
|
||||
$thanatoName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
||||
}
|
||||
return $thanatoName;
|
||||
$thanatoName = $this->getPrincipalUsernameFromVCalendarString($vCalendarString);
|
||||
return $thanatoName ?? BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD;
|
||||
}
|
||||
|
||||
private function GetClientIdFromVCalendarString(string $vCalendarString){
|
||||
|
||||
@ -48,12 +48,12 @@ class TalkService {
|
||||
$this->talkDb = $talkDb;
|
||||
}
|
||||
|
||||
private function getUserDevisTalkRoomNames($idNextCloud){
|
||||
$roomNamesCreatedByUser = '["'.$idNextCloud.'","'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"]';
|
||||
$roomNamesCreatedByAdmin = '["'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'","'.$idNextCloud.'"]';
|
||||
private function getUserDevisTalkRoomNames($target ,$senderUser){
|
||||
$roomNamesCreatedBytargetUser = '["'.$target.'","'.$senderUser.'"]';
|
||||
$roomNamesCreatedBySenderUser = '["'.$senderUser.'","'.$target.'"]';
|
||||
return [
|
||||
"createdByUser" => $roomNamesCreatedByUser,
|
||||
"createdByAdmin" => $roomNamesCreatedByAdmin
|
||||
"target" => $roomNamesCreatedBytargetUser,
|
||||
"sender" => $roomNamesCreatedBySenderUser
|
||||
];
|
||||
}
|
||||
|
||||
@ -68,36 +68,39 @@ class TalkService {
|
||||
return $randomToken;
|
||||
}
|
||||
|
||||
private function getNotificationsSubjectsParameters(){
|
||||
return '{"userType":"users","userId":"'.BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD.'"}';
|
||||
private function getNotificationsSubjectsParameters(string $senderUser){
|
||||
return '{"userType":"users","userId":"'.$senderUser.'"}';
|
||||
}
|
||||
|
||||
private function getNotificationsMessageParameters($commentId){
|
||||
return '{"commentId":"'.$commentId.'"}';
|
||||
}
|
||||
|
||||
public function sendDevisTalkNotifications(string $message,string $idNextcloud){
|
||||
if($idNextcloud === BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD || $idNextcloud === BddConstant::DEFAULT_ADMIN_APP_ID_NEXTCLOUD){
|
||||
return true;
|
||||
|
||||
|
||||
public function sendDevisTalkNotifications(string $message,string $targetUser ,string $senderUser){
|
||||
$senderAndTargetIsTheSameUser = $targetUser == $senderUser;
|
||||
$senderUser = $senderAndTargetIsTheSameUser ? BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD : $senderUser;
|
||||
if( $targetUser == BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD && $senderUser == BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD){
|
||||
return;
|
||||
}
|
||||
$roomNames = $this->getUserDevisTalkRoomNames($idNextcloud);
|
||||
$roomNames = $this->getUserDevisTalkRoomNames($targetUser , $senderUser);
|
||||
$room = $this->talkDb->getDevisTalkRoomByNames($roomNames);
|
||||
if($room == null){
|
||||
$roomToken = $this->generateTalkRandomToken();
|
||||
$room = $this->talkDb->createDevisTalkRoomAndReturnDevisTalkRoom($idNextcloud,$roomToken);
|
||||
$initialMessage = $this->talkDb->setDevisTalkRoomInitialMessageAndReturnMessage($room['id'],$idNextcloud);
|
||||
$room = $this->talkDb->createDevisTalkRoomAndReturnDevisTalkRoom($targetUser,$senderUser, $roomToken);
|
||||
$this->talkDb->setDevisTalkRoomInitialMessageAndReturnMessage($room['id'],$targetUser);
|
||||
}
|
||||
else{
|
||||
$roomToken = $room['token'];
|
||||
}
|
||||
$devisMessage = $this->talkDb->createDevisTalkRoomMessageAndReturnMessage($room['id'],$message);
|
||||
$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
|
||||
$notificationsSubjectsParameters = $this->getNotificationsSubjectsParameters();
|
||||
$notificationsSubjectsParameters = $this->getNotificationsSubjectsParameters($senderUser);
|
||||
$notificationsMessageParameters = $this->getNotificationsMessageParameters($devisMessage['id']);
|
||||
$this->talkDb->sendAttendeeNotifications($idNextcloud,$roomToken,$notificationsSubjectsParameters,$notificationsMessageParameters);
|
||||
return true;
|
||||
$this->talkDb->sendAttendeeNotifications($targetUser,$roomToken,$notificationsSubjectsParameters,$notificationsMessageParameters);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user