Skip to content
Snippets Groups Projects
Commit 8529e0de authored by Vinciane's avatar Vinciane
Browse files

FEAT #9514 Check service and sent or generated acknowledgement

parent 928d271a
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,7 @@ use SrcCore\controllers\PreparedClauseController; ...@@ -20,6 +20,7 @@ use SrcCore\controllers\PreparedClauseController;
use User\models\UserModel; use User\models\UserModel;
use Basket\models\BasketModel; use Basket\models\BasketModel;
use Resource\models\ResModel; use Resource\models\ResModel;
use Resource\controllers\ResController;
use Docserver\models\DocserverModel; use Docserver\models\DocserverModel;
use Docserver\models\DocserverTypeModel; use Docserver\models\DocserverTypeModel;
use Resource\controllers\StoreController; use Resource\controllers\StoreController;
...@@ -122,30 +123,57 @@ class AcknowledgementReceiptController ...@@ -122,30 +123,57 @@ class AcknowledgementReceiptController
public function checkAcknowledgementReceipt(Request $request, Response $response, array $aArgs) public function checkAcknowledgementReceipt(Request $request, Response $response, array $aArgs)
{ {
//check service
$currentUser = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$errors = ResourceListController::listControl(['groupId' => $aArgs['groupId'], 'userId' => $aArgs['userId'], 'basketId' => $aArgs['basketId'], 'currentUserId' => $currentUser['id']]);
if (!empty($errors['errors'])) {
return $response->withStatus($errors['code'])->withJson(['errors' => $errors['errors']]);
}
$data = $request->getParsedBody(); $data = $request->getParsedBody();
//$data = $request->getParams(); //$data = $request->getParams();
if (!Validator::arrayType()->notEmpty()->validate($data['resources'])) {
return $response->withStatus(400)->withJson(['errors' => 'Data resources is empty or not an array']);
}
$sendEmail = 0; $sendEmail = 0;
$sendPaper = 0; $sendPaper = 0;
$noSendAR = [ $noSendAR = [
'number' => 0, 'number' => 0,
'list' => [], 'list' => [],
]; ];
$alreadyGenerated = [
'number' => 0,
'list' => [],
];
$alreadySend = [ $alreadySend = [
'number' => 0, 'number' => 0,
'list' => [], 'list' => [],
]; ];
if (!Validator::arrayType()->notEmpty()->validate($data['resources'])) {
return $response->withStatus(400)->withJson(['errors' => 'Data resources is empty or not an array']);
}
$data['resources'] = array_slice($data['resources'], 0, 500); $data['resources'] = array_slice($data['resources'], 0, 500);
foreach ($data['resources'] as $resId) { foreach ($data['resources'] as $resId) {
$canSendEmail = true;
$canSendPaper = true;
$ext = ResModel::getExtById(['select' => ['res_id', 'category_id', 'address_id', 'is_multicontacts', 'alt_identifier'], 'resId' => $resId]); $ext = ResModel::getExtById(['select' => ['res_id', 'category_id', 'address_id', 'is_multicontacts', 'alt_identifier'], 'resId' => $resId]);
//Check
if (empty($ext)) {
$noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _DOCUMENT_NOT_FOUND ];
continue;
}
if (!ResController::hasRightByResId(['resId' => $resId, 'userId' => $GLOBALS['userId']])) {
$noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _DOCUMENT_OUT_PERIMETER ];
continue;
}
//Verify resource category //Verify resource category
if (empty($ext) || $ext['category_id'] != 'incoming') { if ($ext['category_id'] != 'incoming') {
$noSendAR['number'] += 1; $noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NOT_INCOMING_CATEGORY ]; $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NOT_INCOMING_CATEGORY ];
continue; continue;
...@@ -179,19 +207,68 @@ class AcknowledgementReceiptController ...@@ -179,19 +207,68 @@ class AcknowledgementReceiptController
$pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $template[0]['template_path']) . $template[0]['template_file_name']; $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $template[0]['template_path']) . $template[0]['template_file_name'];
//Verify sending //Verify sending
$acknowledgement = AcknowledgementReceiptModel::get([ $acknowledgements = AcknowledgementReceiptModel::get([
'select' => ['res_id', 'type', 'format', 'send_date'], 'select' => ['res_id', 'type', 'format', 'creation_date', 'send_date'],
'where' => ['res_id = (?)', 'type = (?)'], 'where' => ['res_id = (?)', 'type = (?)'],
'data' => [$resId, $templateAttachmentType], 'data' => [$resId, $templateAttachmentType],
]); ]);
if (!empty($acknowledgement)) { if(!empty($acknowledgements)){
$alreadySend['number'] += 1; $sendedEmail = 0;
$alreadySend['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _AR_ALREADY_SEND ]; $sendedPaper = 0;
continue; $generatedPaper = 0;
$generatedEmail = 0;
$sendError = 0;
$canSendEmail = false;
$canSendPaper = false;
foreach ($acknowledgements as $acknowledgement) {
if ($acknowledgement['format'] == 'html') {
if (!empty($acknowledgement['creation_date']) && !empty($acknowledgement['send_date'])) {
$sendedEmail += 1;
} else if (!empty($acknowledgement['creation_date']) && empty($acknowledgement['send_date'])) {
$generatedEmail += 1;
} else {
$sendedError +=1;
}
} else if($acknowledgement['format'] == 'pdf') {
if (!empty($acknowledgement['creation_date']) && !empty($acknowledgement['send_date'])) {
$sendedPaper += 1;
} else if (!empty($acknowledgement['creation_date']) && empty($acknowledgement['send_date'])) {
$generatedPaper += 1;
} else {
$sendedError +=1;
}
}
}
if($sendedError > 0) {
$noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _AR_SEND_ERROR ];
continue;
}
if($sendedEmail + $sendedPaper == sizeof($acknowledgements)){
$alreadySend['number'] += 1;
$alreadySend['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _AR_ALREADY_SEND ];
continue;
}
if($generatedEmail + $generatedPaper > 0 ){
$alreadyGenerated['number'] += 1;
$alreadyGenerated['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _AR_ALREADY_GENERATED ];
if ($generatedEmail > 0) {
$canSendEmail = true;
}
if($generatedPaper > 0) {
$canSendPaper = true;
}
}
} }
// //Verify associated contact //Verify associated contact
$contactsToProcess = []; $contactsToProcess = [];
if ($ext['is_multicontacts'] == 'Y') { if ($ext['is_multicontacts'] == 'Y') {
$multiContacts = DatabaseModel::select([ $multiContacts = DatabaseModel::select([
...@@ -207,30 +284,32 @@ class AcknowledgementReceiptController ...@@ -207,30 +284,32 @@ class AcknowledgementReceiptController
$contactsToProcess[] = $ext['address_id']; $contactsToProcess[] = $ext['address_id'];
} }
//Verify user informations //Verify contact informations
$email = 0;
$paper = 0;
foreach ($contactsToProcess as $contactToProcess) { foreach ($contactsToProcess as $contactToProcess) {
$email = 0;
$paper = 0;
if (empty($contactToProcess)) { if (empty($contactToProcess)) {
$email = 0;
$paper = 0;
$noSendAR['number'] += 1; $noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NO_CONTACT ]; $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NO_CONTACT ];
continue; continue 2;
} }
$contact = ContactModel::getByAddressId(['addressId' => $contactToProcess, 'select' => ['email', 'address_street', 'address_town', 'address_postal_code']]); $contact = ContactModel::getByAddressId(['addressId' => $contactToProcess, 'select' => ['email', 'address_street', 'address_town', 'address_postal_code']]);
if (empty($contact['email']) || empty($contact['address_street']) || empty($contact['address_town']) || empty($contact['address_postal_code'])) { if (empty($contact['email']) && (empty($contact['address_street']) || empty($contact['address_town']) || empty($contact['address_postal_code']))) {
$noSendAR['number'] += 1; $noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _USER_MISSING_INFORMATIONS ]; $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _USER_MISSING_INFORMATIONS ];
continue; continue 2;
} }
if (!empty($contact['email'])) { if (!empty($contact['email'])) {
if (empty($template[0]['template_content'])) { if (empty($template[0]['template_content'])) {
$noSendAR['number'] += 1; $noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NO_EMAIL_TEMPLATE ]; $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NO_EMAIL_TEMPLATE ];
continue; continue 2;
} else { } else {
$email += 1; $email += 1;
} }
...@@ -238,17 +317,22 @@ class AcknowledgementReceiptController ...@@ -238,17 +317,22 @@ class AcknowledgementReceiptController
if (!file_exists($pathToDocument)) { if (!file_exists($pathToDocument)) {
$noSendAR['number'] += 1; $noSendAR['number'] += 1;
$noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NO_PAPER_TEMPLATE ]; $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => _NO_PAPER_TEMPLATE ];
continue; continue 2;
} else { } else {
$paper += 1; $paper += 1;
} }
} }
} }
$sendEmail += $email; if($email > 0 && $canSendEmail){
$sendPaper += $paper; $sendEmail += $email;
}
if($paper > 0 && $canSendPaper){
$sendPaper += $paper;
}
} }
return $response->withJson(['sendEmail' => $sendEmail, 'sendPaper' => $sendPaper, 'noSendAR' => $noSendAR, 'alreadySend' => $alreadySend]); return $response->withJson(['sendEmail' => $sendEmail, 'sendPaper' => $sendPaper, 'noSendAR' => $noSendAR, 'alreadySend' => $alreadySend, 'alreadyGenerated' => $alreadyGenerated]);
} }
} }
...@@ -52,6 +52,7 @@ define('_DOCTYPE_SECONDLEVEL_ADDED', 'Doctype second level added'); ...@@ -52,6 +52,7 @@ define('_DOCTYPE_SECONDLEVEL_ADDED', 'Doctype second level added');
define('_DOCTYPE_SECONDLEVEL_DELETED', 'Doctype second level deleted'); define('_DOCTYPE_SECONDLEVEL_DELETED', 'Doctype second level deleted');
define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Doctype second level edited'); define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Doctype second level edited');
define('_DOCUMENT_NOT_FOUND', 'Document not found'); define('_DOCUMENT_NOT_FOUND', 'Document not found');
define('_DOCUMENT_OUT_PERIMETER', 'Document out of perimeter');
define('_EMAIL_ADDED', 'Email added'); define('_EMAIL_ADDED', 'Email added');
define('_ENTITY_CREATION', 'Entity creation'); define('_ENTITY_CREATION', 'Entity creation');
define('_ENTITY_MODIFICATION', 'Entity modification'); define('_ENTITY_MODIFICATION', 'Entity modification');
...@@ -388,11 +389,13 @@ define('_RESET_LETTER', 'Reset workflow'); ...@@ -388,11 +389,13 @@ define('_RESET_LETTER', 'Reset workflow');
define('_SIMPLE_CONFIRM_WITH_UPDATE_DATE', 'Confirm and update departure date'); define('_SIMPLE_CONFIRM_WITH_UPDATE_DATE', 'Confirm and update departure date');
define('_NOT_INCOMING_CATEGORY', 'Not incomping category' ); define('_NOT_INCOMING_CATEGORY', 'Not incomping category' );
define('_AR_ALREADY_SEND', 'Acknowledgement receipt already send'); define('_AR_ALREADY_SEND', 'Acknowledgement receipt already send');
define('_AR_ALREADY_GENERATED', 'Acknowledgement receipt generated but not sent');
define('_NO_CONTACT', 'No associated contact'); define('_NO_CONTACT', 'No associated contact');
define('_USER_MISSING_INFORMATIONS', 'Missing informations in contact card'); define('_USER_MISSING_INFORMATIONS', 'Missing informations in contact card');
define('_NO_TEMPLATE', 'No template'); define('_NO_TEMPLATE', 'No template');
define('_NO_EMAIL_TEMPLATE', 'No electronic template'); define('_NO_EMAIL_TEMPLATE', 'No electronic template');
define('_NO_PAPER_TEMPLATE', 'No paper template'); define('_NO_PAPER_TEMPLATE', 'No paper template');
define('_AR_SEND_ERROR', 'Error in acknowledgements receipt already sent');
// REPORTS // REPORTS
define('_FOLDER_VIEW_STAT', 'Number of read folders'); define('_FOLDER_VIEW_STAT', 'Number of read folders');
......
...@@ -52,6 +52,7 @@ define('_DOCTYPE_SECONDLEVEL_ADDED', 'Sous-chemise ajoutée'); ...@@ -52,6 +52,7 @@ define('_DOCTYPE_SECONDLEVEL_ADDED', 'Sous-chemise ajoutée');
define('_DOCTYPE_SECONDLEVEL_DELETED', 'Sous-chemise supprimée'); define('_DOCTYPE_SECONDLEVEL_DELETED', 'Sous-chemise supprimée');
define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Sous-chemise modifiée'); define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Sous-chemise modifiée');
define('_DOCUMENT_NOT_FOUND', 'Document introuvable'); define('_DOCUMENT_NOT_FOUND', 'Document introuvable');
define('_DOCUMENT_OUT_PERIMETER', 'Document en dehors du périmètre');
define('_EMAIL_ADDED', 'Courriel ajouté'); define('_EMAIL_ADDED', 'Courriel ajouté');
define('_ENTITY_CREATION', 'Création entité'); define('_ENTITY_CREATION', 'Création entité');
define('_ENTITY_MODIFICATION', 'Modification entité'); define('_ENTITY_MODIFICATION', 'Modification entité');
...@@ -388,11 +389,13 @@ define('_RESET_LETTER', 'Remise à zéro du circuit de traitement'); ...@@ -388,11 +389,13 @@ define('_RESET_LETTER', 'Remise à zéro du circuit de traitement');
define('_SIMPLE_CONFIRM_WITH_UPDATE_DATE', 'Confirmation et mise à jour de la date de départ'); define('_SIMPLE_CONFIRM_WITH_UPDATE_DATE', 'Confirmation et mise à jour de la date de départ');
define('_NOT_INCOMING_CATEGORY', 'Catégorie différente de \'Courrier arrivée\'' ); define('_NOT_INCOMING_CATEGORY', 'Catégorie différente de \'Courrier arrivée\'' );
define('_AR_ALREADY_SEND', 'Accusé de réception déjà envoyé'); define('_AR_ALREADY_SEND', 'Accusé de réception déjà envoyé');
define('_AR_ALREADY_GENERATED', 'Accusé de réception généré mais non envoyé');
define('_NO_CONTACT', 'Pas de contact associé'); define('_NO_CONTACT', 'Pas de contact associé');
define('_USER_MISSING_INFORMATIONS', 'Informations incomplètes sur la fiche du contact'); define('_USER_MISSING_INFORMATIONS', 'Informations incomplètes sur la fiche du contact');
define('_NO_TEMPLATE', 'Pas de modèle'); define('_NO_TEMPLATE', 'Pas de modèle');
define('_NO_EMAIL_TEMPLATE', 'Pas de modèle électronique'); define('_NO_EMAIL_TEMPLATE', 'Pas de modèle électronique');
define('_NO_PAPER_TEMPLATE', 'Pas de modèle papier'); define('_NO_PAPER_TEMPLATE', 'Pas de modèle papier');
define('_AR_SEND_ERROR', 'Erreur dans les accusés de réception déjà envoyés');
// REPORTS // REPORTS
define('_FOLDER_VIEW_STAT', 'Nombre de dossiers consultés'); define('_FOLDER_VIEW_STAT', 'Nombre de dossiers consultés');
......
...@@ -42,6 +42,7 @@ define('_DOCTYPE_SECONDLEVEL_ADDED', 'Submap toegevoegd'); ...@@ -42,6 +42,7 @@ define('_DOCTYPE_SECONDLEVEL_ADDED', 'Submap toegevoegd');
define('_DOCTYPE_SECONDLEVEL_DELETED', 'Submap verwijderd'); define('_DOCTYPE_SECONDLEVEL_DELETED', 'Submap verwijderd');
define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Submap gewijzigd'); define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Submap gewijzigd');
define('_DOCUMENT_NOT_FOUND', 'Document onvindbaar'); define('_DOCUMENT_NOT_FOUND', 'Document onvindbaar');
define('_DOCUMENT_OUT_PERIMETER', 'Document buiten de omtrek'); //_TO_TRANSLATE
define('_EMAIL_ADDED', 'TO_TRANSLATE : Email added'); define('_EMAIL_ADDED', 'TO_TRANSLATE : Email added');
define('_ENTITY_CREATION', 'Aanmaak eenheid'); define('_ENTITY_CREATION', 'Aanmaak eenheid');
define('_ENTITY_MODIFICATION', 'Wijziging eenheid'); define('_ENTITY_MODIFICATION', 'Wijziging eenheid');
...@@ -387,11 +388,13 @@ define('_RESET_LETTER', 'Reset van het verwerkingscircuit'); ...@@ -387,11 +388,13 @@ define('_RESET_LETTER', 'Reset van het verwerkingscircuit');
define('_SIMPLE_CONFIRM_WITH_UPDATE_DATE', 'Bevestiging en bijwerking van de vertrekdatum'); define('_SIMPLE_CONFIRM_WITH_UPDATE_DATE', 'Bevestiging en bijwerking van de vertrekdatum');
define('_NOT_INCOMING_CATEGORY', 'Categorie verschillend van \'Inkomende post\'' ); //_TO_TRANSLATE define('_NOT_INCOMING_CATEGORY', 'Categorie verschillend van \'Inkomende post\'' ); //_TO_TRANSLATE
define('_AR_ALREADY_SEND', 'Ontvangstbevestiging reeds verzonden'); //_TO_TRANSLATE define('_AR_ALREADY_SEND', 'Ontvangstbevestiging reeds verzonden'); //_TO_TRANSLATE
define('_AR_ALREADY_GENERATED', 'Ontvangstbevestiging gegenereerd maar niet verzonden'); //_TO_TRANSLATE
define('_NO_CONTACT', 'Geen bijbehorend contact'); //_TO_TRANSLATE define('_NO_CONTACT', 'Geen bijbehorend contact'); //_TO_TRANSLATE
define('_USER_MISSING_INFORMATIONS', 'Ontbrekende informatie op de contactkaart'); //_TO_TRANSLATE define('_USER_MISSING_INFORMATIONS', 'Ontbrekende informatie op de contactkaart'); //_TO_TRANSLATE
define('_NO_TEMPLATE', 'Geen sjabloon'); //_TO_TRANSLATE define('_NO_TEMPLATE', 'Geen sjabloon'); //_TO_TRANSLATE
define('_NO_EMAIL_TEMPLATE', 'Geen elektronisch sjabloon'); //_TO_TRANSLATE define('_NO_EMAIL_TEMPLATE', 'Geen elektronisch sjabloon'); //_TO_TRANSLATE
define('_NO_PAPER_TEMPLATE', 'Geen papieren sjabloon'); //_TO_TRANSLATE define('_NO_PAPER_TEMPLATE', 'Geen papieren sjabloon'); //_TO_TRANSLATE
define('_AR_SEND_ERROR', 'Fout in reeds verzonden ontvangstbevestigingen'); //_TO_TRANSLATE
// REPORTS // REPORTS
define('_FOLDER_VIEW_STAT', 'Aantal geraadpleegde mappen'); define('_FOLDER_VIEW_STAT', 'Aantal geraadpleegde mappen');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment