diff --git a/rest/index.php b/rest/index.php index 97528decc7fa1ae73efbe292f8d5fe1f17ab3405..af01a1402f2c8206e6efc6b990b29ae81339f3ee 100755 --- a/rest/index.php +++ b/rest/index.php @@ -62,6 +62,11 @@ $app->post('/actions', \Action\controllers\ActionController::class . ':create'); $app->put('/actions/{id}', \Action\controllers\ActionController::class . ':update'); $app->delete('/actions/{id}', \Action\controllers\ActionController::class . ':delete'); +//Acknowledgement Receipt +$app->post('/acknowledgementReceipt', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':createPaperAcknowledgement'); +$app->get('/acknowledgementReceipt/{id}', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getById'); +$app->get('/acknowledgementReceipt/{id}/content', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getAcknowledgementReceipt'); + //Attachments $app->post('/attachments', \Attachment\controllers\AttachmentController::class . ':create'); $app->get('/attachments/{id}', \Attachment\controllers\AttachmentController::class . ':getById'); @@ -365,7 +370,6 @@ $app->put('/resources/{resId}/unsign', \SignatureBook\controllers\SignatureBookC $app->get('/resources/{resId}/acknowledgementReceipts', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':get'); $app->get('/resources/{resId}/shippings', \Shipping\controllers\ShippingController::class . ':get'); -$app->get('/res/{resId}/acknowledgementReceipt/{id}', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getAcknowledgementReceipt'); $app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus'); $app->post('/res/list', \Resource\controllers\ResController::class . ':getList'); $app->put('/res/externalInfos', \Resource\controllers\ResController::class . ':updateExternalInfos'); @@ -386,7 +390,7 @@ $app->put('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/act $app->get('/resourcesList/exportTemplate', \Resource\controllers\ExportController::class . ':getExportTemplates'); $app->get('/resourcesList/summarySheets', \Resource\controllers\SummarySheetController::class . ':createListWithAll'); $app->put('/resourcesList/integrations', \Resource\controllers\ResController::class . ':setInIntegrations'); -$app->post('/acknowledgementReceipt', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':createPaperAcknowledgement'); + //PreProcess $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/checkAcknowledgementReceipt', \Action\controllers\PreProcessActionController::class . ':checkAcknowledgementReceipt'); $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/checkExternalSignatoryBook', \Action\controllers\PreProcessActionController::class . ':checkExternalSignatoryBook'); diff --git a/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php b/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php index 624fdada09607660fb11ca08dc340bfc09a9497e..dc91fd368c881bf15c4474f2b3ef9c5b48f24bc6 100644 --- a/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php +++ b/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php @@ -66,6 +66,43 @@ class AcknowledgementReceiptController return $response->withJson($acknowledgementReceipts); } + public static function getById(Request $request, Response $response, array $args) + { + $acknowledgementReceipt = AcknowledgementReceiptModel::getByIds([ + 'select' => ['id', 'res_id', 'type', 'format', 'user_id', 'creation_date', 'send_date', 'contact_id'], + 'ids' => [$args['id']] + ]); + + if (empty($acknowledgementReceipt[0])) { + return $response->withStatus(400)->withJson(['errors' => 'Acknowledgement receipt does not exist']); + } + $acknowledgementReceipt = $acknowledgementReceipt[0]; + + if (!Validator::intVal()->validate($acknowledgementReceipt['res_id']) || !ResController::hasRightByResId(['resId' => [$acknowledgementReceipt['res_id']], 'userId' => $GLOBALS['id']])) { + return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); + } + + $contact = ContactModel::getById(['id' => $acknowledgementReceipt['contact_id'], 'select' => ['firstname', 'lastname', 'company']]); + $contactLabel = ContactController::getFormattedOnlyContact(['contact' => $contact]); + + $userLabel = UserModel::getLabelledUserById(['id' => $acknowledgementReceipt['user_id']]); + + $acknowledgementReceipt = [ + 'id' => $acknowledgementReceipt['id'], + 'resId' => $acknowledgementReceipt['res_id'], + 'type' => $acknowledgementReceipt['type'], + 'format' => $acknowledgementReceipt['format'], + 'userId' => $acknowledgementReceipt['user_id'], + 'userLabel' => $userLabel, + 'creationDate' => $acknowledgementReceipt['creation_date'], + 'sendDate' => $acknowledgementReceipt['send_date'], + 'contactId' => $acknowledgementReceipt['contact_id'], + 'contactLabel' => $contactLabel['contact']['idToDisplay'] + ]; + + return $response->withJson(['acknowledgementReceipt' => $acknowledgementReceipt]); + } + public function createPaperAcknowledgement(Request $request, Response $response) { $bodyData = $request->getParsedBody(); @@ -127,30 +164,35 @@ class AcknowledgementReceiptController return $response->withHeader('Content-Type', $mimeType); } - public function getAcknowledgementReceipt(Request $request, Response $response, array $aArgs) + public function getAcknowledgementReceipt(Request $request, Response $response, array $args) { - if (!Validator::intVal()->validate($aArgs['resId']) || !ResController::hasRightByResId(['resId' => [$aArgs['resId']], 'userId' => $GLOBALS['id']])) { - return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); - } - $document = AcknowledgementReceiptModel::getByIds([ - 'select' => ['docserver_id', 'path', 'filename', 'fingerprint'], - 'ids' => [$aArgs['id']] + 'select' => ['docserver_id', 'path', 'filename', 'fingerprint', 'res_id'], + 'ids' => [$args['id']] ]); - $docserver = DocserverModel::getByDocserverId(['docserverId' => $document[0]['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]); + if (empty($document[0])) { + return $response->withStatus(400)->withJson(['errors' => 'Acknowledgement receipt does not exist']); + } + $document = $document[0]; + + if (!Validator::intVal()->validate($document['res_id']) || !ResController::hasRightByResId(['resId' => [$document['res_id']], 'userId' => $GLOBALS['id']])) { + return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); + } + + $docserver = DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]); if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) { return $response->withStatus(400)->withJson(['errors' => 'Docserver does not exist']); } - $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $document[0]['path']) . $document[0]['filename']; + $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $document['path']) . $document['filename']; if (!file_exists($pathToDocument)) { return $response->withStatus(404)->withJson(['errors' => 'Document not found on docserver']); } $fingerprint = StoreController::getFingerPrint(['filePath' => $pathToDocument]); - if (!empty($document[0]['fingerprint']) && $document[0]['fingerprint'] != $fingerprint) { + if (!empty($document['fingerprint']) && $document['fingerprint'] != $fingerprint) { return $response->withStatus(400)->withJson(['errors' => 'Fingerprints do not match']); } @@ -169,9 +211,9 @@ class AcknowledgementReceiptController HistoryController::add([ 'tableName' => 'acknowledgement_receipts', - 'recordId' => $aArgs['id'], + 'recordId' => $args['id'], 'eventType' => 'VIEW', - 'info' => _ACKNOWLEDGEMENT_RECEIPT_DISPLAYING . " : {$aArgs['id']}", + 'info' => _ACKNOWLEDGEMENT_RECEIPT_DISPLAYING . " : {$args['id']}", 'moduleId' => 'res', 'eventId' => 'acknowledgementreceiptview', ]);