From 20d1c1ddfe03aed76b934d8083b0589d0cf0381c Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Mon, 31 Aug 2020 19:08:44 +0200 Subject: [PATCH] FEAT #13998 TIME 1 improve controls for registered mail --- .../registeredMail/controllers/RegisteredMailController.php | 3 +++ src/app/registeredMail/controllers/RegisteredMailTrait.php | 6 +++++- .../print-registered-mail-action.component.ts | 4 ++++ .../save-and-print-registered-mail-action.component.ts | 5 ++++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/app/registeredMail/controllers/RegisteredMailController.php b/src/app/registeredMail/controllers/RegisteredMailController.php index 4f43f8cd838..3b261f6d604 100644 --- a/src/app/registeredMail/controllers/RegisteredMailController.php +++ b/src/app/registeredMail/controllers/RegisteredMailController.php @@ -51,6 +51,8 @@ class RegisteredMailController return $response->withStatus(400)->withJson(['errors' => 'Body warranty is not correct']); } elseif ($body['type'] == 'RW' && $body['warranty'] == 'R3') { return $response->withStatus(400)->withJson(['errors' => 'Body warranty R3 is not allowed for type RW']); + } elseif (!Validator::notEmpty()->validate($body['recipient'])) { + return $response->withStatus(400)->withJson(['errors' => 'Body recipient is empty']); } $resource = ResModel::getById(['select' => ['departure_date'], 'resId' => $args['resId']]); @@ -68,6 +70,7 @@ class RegisteredMailController 'warranty' => $body['warranty'], 'reference' => $body['reference'], 'letter' => empty($body['letter']) ? 'false' : 'true', + 'recipient' => json_encode($body['recipient']), ]; if ($registeredMail['type'] != $body['type']) { diff --git a/src/app/registeredMail/controllers/RegisteredMailTrait.php b/src/app/registeredMail/controllers/RegisteredMailTrait.php index 33d310e3b85..07c56e0fe8b 100644 --- a/src/app/registeredMail/controllers/RegisteredMailTrait.php +++ b/src/app/registeredMail/controllers/RegisteredMailTrait.php @@ -96,9 +96,11 @@ trait RegisteredMailTrait if (!in_array($args['data']['type'], ['2D', '2C', 'RW'])) { return ['errors' => ['Type is not correct']]; } elseif (!in_array($args['data']['warranty'], ['R1', 'R2', 'R3'])) { - return ['errors' => ['Type is not correct']]; + return ['errors' => ['warranty is not correct']]; } elseif ($args['data']['type'] == 'RW' && $args['data']['warranty'] == 'R3') { return ['errors' => ['R3 warranty is not allowed for type RW']]; + } elseif (empty($args['data']['recipient']) || empty($args['data']['issuingSiteId'])) { + return ['errors' => ['recipient or issuingSiteId is missing to print registered mail']]; } $issuingSite = IssuingSiteModel::getById([ @@ -173,6 +175,8 @@ trait RegisteredMailTrait $registeredMail = RegisteredMailModel::getByResId(['select' => ['issuing_site', 'type', 'number', 'warranty', 'letter', 'recipient', 'reference'], 'resId' => $args['resId']]); if (empty($registeredMail)) { return ['errors' => ['No registered mail for this resource']]; + } elseif (empty(json_decode($registeredMail['recipient'])) || empty($registeredMail['issuing_site']) || empty($registeredMail['type']) || empty($registeredMail['number']) || empty($registeredMail['warranty'])) { + return ['errors' => ['recipient, issuing_site, type, number or warranty is missing to print registered mail']]; } RegisteredMailModel::update([ diff --git a/src/frontend/app/actions/print-registered-mail-action/print-registered-mail-action.component.ts b/src/frontend/app/actions/print-registered-mail-action/print-registered-mail-action.component.ts index 3ae4f4ae9a8..c82d4663969 100644 --- a/src/frontend/app/actions/print-registered-mail-action/print-registered-mail-action.component.ts +++ b/src/frontend/app/actions/print-registered-mail-action/print-registered-mail-action.component.ts @@ -39,6 +39,10 @@ export class PrintRegisteredMailActionComponent implements OnInit { const downloadLink = document.createElement('a'); this.http.put(this.data.processActionRoute, { resources: this.data.resIds, note: this.noteEditor.getNote() }).pipe( tap((data: any) => { + if (data && data.errors != null) { + this.notify.error(data.errors); + return of(false); + } Object.values(data.data).forEach((encodedFile: string) => { if (!this.functions.empty(encodedFile)) { downloadLink.href = `data:application/pdf;base64,${encodedFile}`; diff --git a/src/frontend/app/actions/save-and-print-registered-mail-action/save-and-print-registered-mail-action.component.ts b/src/frontend/app/actions/save-and-print-registered-mail-action/save-and-print-registered-mail-action.component.ts index 10621cdce9b..a0e7302036a 100644 --- a/src/frontend/app/actions/save-and-print-registered-mail-action/save-and-print-registered-mail-action.component.ts +++ b/src/frontend/app/actions/save-and-print-registered-mail-action/save-and-print-registered-mail-action.component.ts @@ -13,7 +13,6 @@ import { of } from 'rxjs'; }) export class SaveAndPrintRegisteredMailActionComponent implements OnInit { - loading: boolean = false; @ViewChild('noteEditor', { static: true }) noteEditor: NoteEditorComponent; @@ -54,6 +53,10 @@ export class SaveAndPrintRegisteredMailActionComponent implements OnInit { }) ), tap((data: any) => { + if (data && data.errors != null) { + this.notify.error(data.errors); + return of(false); + } const downloadLink = document.createElement('a'); downloadLink.href = `data:application/pdf;base64,${data}`; downloadLink.setAttribute('download', 'recommande.pdf'); -- GitLab