diff --git a/src/app/registeredMail/controllers/IssuingSiteController.php b/src/app/registeredMail/controllers/IssuingSiteController.php index 0ae034ea367ed1944c4744213260a9164ade3b77..59a06b165d552b096409a7197047ab079f6d97d0 100644 --- a/src/app/registeredMail/controllers/IssuingSiteController.php +++ b/src/app/registeredMail/controllers/IssuingSiteController.php @@ -69,13 +69,13 @@ class IssuingSiteController 'id' => $site['id'], 'label' => $site['label'], 'postOfficeLabel' => $site['post_office_label'] ?? null, - 'accountNumber' => $site['account_number'] ?? null, - 'addressNumber' => $site['address_number'] ?? null, - 'addressStreet' => $site['address_street'] ?? null, + 'accountNumber' => $site['account_number'], + 'addressNumber' => $site['address_number'], + 'addressStreet' => $site['address_street'], 'addressAdditional1' => $site['address_additional1'] ?? null, 'addressAdditional2' => $site['address_additional2'] ?? null, - 'addressPostcode' => $site['address_postcode'] ?? null, - 'addressTown' => $site['address_town'] ?? null, + 'addressPostcode' => $site['address_postcode'], + 'addressTown' => $site['address_town'], 'addressCountry' => $site['address_country'] ?? null ]; @@ -126,7 +126,7 @@ class IssuingSiteController 'limit ' => 1 ]); if (!empty($site)) { - return $response->withStatus(400)->withJson(['errors' => 'Body accountNumber is already used by another site']); + return $response->withStatus(400)->withJson(['errors' => 'Body accountNumber is already used by another site', 'lang' => 'accountNumberAlreadyUsed']); } if (!empty($body['entities']) && !Validator::arrayType()->validate($body['entities'])) { @@ -143,12 +143,12 @@ class IssuingSiteController 'label' => $body['label'], 'postOfficeLabel' => $body['postOfficeLabel'] ?? null, 'accountNumber' => $body['accountNumber'], - 'addressNumber' => $body['addressNumber'] ?? null, - 'addressStreet' => $body['addressStreet'] ?? null, + 'addressNumber' => $body['addressNumber'], + 'addressStreet' => $body['addressStreet'], 'addressAdditional1' => $body['addressAdditional1'] ?? null, 'addressAdditional2' => $body['addressAdditional2'] ?? null, - 'addressPostcode' => $body['addressPostcode'] ?? null, - 'addressTown' => $body['addressTown'] ?? null, + 'addressPostcode' => $body['addressPostcode'], + 'addressTown' => $body['addressTown'], 'addressCountry' => $body['addressCountry'] ?? null ]); @@ -209,7 +209,7 @@ class IssuingSiteController 'limit ' => 1 ]); if (!empty($site)) { - return $response->withStatus(400)->withJson(['errors' => 'Body accountNumber is already used by another site']); + return $response->withStatus(400)->withJson(['errors' => 'Body accountNumber is already used by another site', 'lang' => 'accountNumberAlreadyUsed']); } if (!empty($body['entities']) && !Validator::arrayType()->validate($body['entities'])) { @@ -227,12 +227,12 @@ class IssuingSiteController 'label' => $body['label'], 'post_office_label' => $body['postOfficeLabel'] ?? null, 'account_number' => $body['accountNumber'], - 'address_number' => $body['addressNumber'] ?? null, - 'address_street' => $body['addressStreet'] ?? null, + 'address_number' => $body['addressNumber'], + 'address_street' => $body['addressStreet'], 'address_additional1' => $body['addressAdditional1'] ?? null, 'address_additional2' => $body['addressAdditional2'] ?? null, - 'address_postcode' => $body['addressPostcode'] ?? null, - 'address_town' => $body['addressTown'] ?? null, + 'address_postcode' => $body['addressPostcode'], + 'address_town' => $body['addressTown'], 'address_country' => $body['addressCountry'] ?? null ], 'where' => ['id = ?'], @@ -273,6 +273,14 @@ class IssuingSiteController return $response->withStatus(204); } + $ranges = RegisteredNumberRangeModel::get([ + 'where' => ['site_id = ?', 'status = ?'], + 'data' => [$args['id'], 'OK'] + ]); + if (!empty($ranges)) { + return $response->withStatus(400)->withJson(['errors' => 'Cannot delete site : site is used by an active range', 'lang' => 'siteIsUsedByActiveRange']); + } + IssuingSiteEntitiesModel::delete([ 'where' => ['site_id = ?'], 'data' => [$args['id']] diff --git a/src/app/registeredMail/controllers/RegisteredNumberRangeController.php b/src/app/registeredMail/controllers/RegisteredNumberRangeController.php index b701aeea76bd183015dcc555961ccde7df1fd479..369f1407b2c52337dc21acc56bb04c88d56b9d4f 100644 --- a/src/app/registeredMail/controllers/RegisteredNumberRangeController.php +++ b/src/app/registeredMail/controllers/RegisteredNumberRangeController.php @@ -129,7 +129,7 @@ class RegisteredNumberRangeController return $response->withStatus(400)->withJson(['errors' => 'Body siteId is empty or not an integer']); } if ($body['rangeStart'] >= $body['rangeEnd']) { - return $response->withStatus(400)->withJson(['errors' => 'Body rangeStart cannot be larger or equal than rangeEnd']); + return $response->withStatus(400)->withJson(['errors' => 'Body rangeStart cannot be larger or equal than rangeEnd', 'lang' => 'rangeStartLargerThanRangeEnd']); } $site = IssuingSiteModel::getById(['id' => $body['siteId']]); @@ -143,7 +143,7 @@ class RegisteredNumberRangeController 'data' => [$body['trackerNumber']] ]); if (!empty($ranges)) { - return $response->withStatus(400)->withJson(['errors' => 'Body trackerNumber is already used by another range']); + return $response->withStatus(400)->withJson(['errors' => 'Body trackerNumber is already used by another range', 'lang' => 'trackingNumberAlreadyUsed']); } $ranges = RegisteredNumberRangeModel::get([ @@ -156,7 +156,7 @@ class RegisteredNumberRangeController foreach ($ranges as $range) { if ($body['rangeStart'] <= $range['range_start'] && $range['range_start'] <= $body['rangeEnd'] || $body['rangeStart'] <= $range['range_end'] && $range['range_end'] <= $body['rangeEnd']) { - return $response->withStatus(400)->withJson(['errors' => 'Range overlaps another range']); + return $response->withStatus(400)->withJson(['errors' => 'Range overlaps another range', 'lang' => 'rangeOverlaps']); } } @@ -212,7 +212,7 @@ class RegisteredNumberRangeController return $response->withStatus(400)->withJson(['errors' => 'Body siteId is empty or not an integer']); } if ($body['rangeStart'] >= $body['rangeEnd']) { - return $response->withStatus(400)->withJson(['errors' => 'Body rangeStart cannot be larger or equal than rangeEnd']); + return $response->withStatus(400)->withJson(['errors' => 'Body rangeStart cannot be larger or equal than rangeEnd', 'lang' => 'rangeStartLargerThanRangeEnd']); } $site = IssuingSiteModel::getById(['id' => $body['siteId']]); @@ -226,7 +226,7 @@ class RegisteredNumberRangeController 'data' => [$body['trackerNumber'], $args['id']] ]); if (!empty($ranges)) { - return $response->withStatus(400)->withJson(['errors' => 'Body trackerNumber is already used by another range']); + return $response->withStatus(400)->withJson(['errors' => 'Body trackerNumber is already used by another range', 'lang' => 'trackingNumberAlreadyUsed']); } $ranges = RegisteredNumberRangeModel::get([ @@ -239,7 +239,7 @@ class RegisteredNumberRangeController foreach ($ranges as $item) { if ($body['rangeStart'] <= $item['range_start'] && $item['range_start'] <= $body['rangeEnd'] || $body['rangeStart'] <= $item['range_end'] && $item['range_end'] <= $body['rangeEnd']) { - return $response->withStatus(400)->withJson(['errors' => 'Range overlaps another range']); + return $response->withStatus(400)->withJson(['errors' => 'Range overlaps another range', 'lang' => 'rangeOverlaps']); } } diff --git a/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html b/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html index 849483c19423dbe3200a37312c0292bf47de82b4..81f43d07fb66ded95479edb3512854dc3ab137aa 100644 --- a/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html +++ b/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html @@ -26,7 +26,7 @@ </mat-form-field> <mat-form-field> <mat-label>{{'lang.coclicoNumber' | translate}}</mat-label> - <input type="text" pattern="[0-9]+" maxlength="10" matInput formControlName="accountNumber"> + <input type="number" pattern="[0-9]+" maxlength="10" matInput formControlName="accountNumber"> </mat-form-field> <mat-form-field> <mat-label>{{'lang.postOffice' | translate}}</mat-label> @@ -73,7 +73,7 @@ </mat-form-field> <mat-form-field> <mat-label>{{'lang.contactsParameters_addressNumber' | translate}}</mat-label> - <input matInput formControlName="addressNumber"> + <input type="number" matInput formControlName="addressNumber"> </mat-form-field> <mat-form-field> <mat-label>{{'lang.contactsParameters_addressStreet' | translate}}</mat-label> diff --git a/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.ts b/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.ts index 2f25c77604637ede430c3e96ab351d6ac606a46e..e3afd52652e787b2ae096fa743716d8339258f86 100644 --- a/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.ts +++ b/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.ts @@ -257,7 +257,7 @@ export class IssuingSiteComponent implements OnInit { this.notify.success(this.translate.instant('lang.issuingSiteAdded')); this.router.navigate(['/administration/issuingSites']); }, (err) => { - this.notify.error(err.error.errors); + this.notify.handleSoftErrors(err); }); } else { this.http.put('../rest/registeredMail/sites/' + this.id, objToSubmit) @@ -265,7 +265,7 @@ export class IssuingSiteComponent implements OnInit { this.notify.success(this.translate.instant('lang.issuingSiteUpdated')); this.router.navigate(['/administration/issuingSites']); }, (err) => { - this.notify.error(err.error.errors); + this.notify.handleSoftErrors(err); }); } } diff --git a/src/frontend/app/administration/registered-mail/registered-mail.component.ts b/src/frontend/app/administration/registered-mail/registered-mail.component.ts index 6c5c09278c86382310606f7ef82d621e751d0930..858ace1026a920802952f5d7a0fd3101df11db22 100644 --- a/src/frontend/app/administration/registered-mail/registered-mail.component.ts +++ b/src/frontend/app/administration/registered-mail/registered-mail.component.ts @@ -1,4 +1,4 @@ -import {Component, OnInit, ViewChild} from '@angular/core'; +import {Component, OnInit} from '@angular/core'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { HttpClient } from '@angular/common/http'; @@ -8,7 +8,6 @@ import { HeaderService } from '../../../service/header.service'; import { AppService } from '../../../service/app.service'; import { tap, catchError } from 'rxjs/operators'; import { of } from 'rxjs/internal/observable/of'; -import {MaarchFlatTreeComponent} from '../../../plugins/tree/maarch-flat-tree.component'; @Component({ selector: 'app-registered-mail', @@ -195,7 +194,7 @@ export class RegisteredMailComponent implements OnInit { this.notify.success(this.translate.instant('lang.registeredMailNumberRangesAdded')); this.router.navigate(['/administration/registeredMails']); }, (err) => { - this.notify.error(err.error.errors); + this.notify.handleSoftErrors(err); }); } else { this.http.put('../rest/registeredMail/ranges/' + this.id, objToSubmit) @@ -203,7 +202,7 @@ export class RegisteredMailComponent implements OnInit { this.notify.success(this.translate.instant('lang.registeredMailNumberRangesUpdated')); this.router.navigate(['/administration/registeredMails']); }, (err) => { - this.notify.error(err.error.errors); + this.notify.handleSoftErrors(err); }); } } diff --git a/src/lang/lang-en.json b/src/lang/lang-en.json index 3ff06723dcc9d0251b1df1a0b6aee3f7ff1be88e..0431ab7b47bcbe187540dbbed73e49837b95301a 100644 --- a/src/lang/lang-en.json +++ b/src/lang/lang-en.json @@ -1913,5 +1913,10 @@ "authorizedRoutesInformations": "One route per row. Routes documentation", "canNotDisabledField": "This field can not be disabled because it is empty and mandatory", "registeredMailsIncluded": "Number of registered mails included", - "cannotGenerateDepositListForMails": "Imposible to generate for the following registered mails :" + "cannotGenerateDepositListForMails": "Imposible to generate for the following registered mails :", + "accountNumberAlreadyUsed": "Account number is already used by another issuing site", + "rangeStartLargerThanRangeEnd": "Range start cannot be larger than range end", + "trackingNumberAlreadyUsed": "Tracking number is already used", + "rangeOverlaps": "Range overlaps another range", + "siteIsUsedByActiveRange": "Cannot delete issuing site : site is used by an active range" } diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json index 57d012b5687fba5101a9a1075cdf886954130a4b..8a1b1e4266d2aaaa57f2c99d3ebc4a9d251ec1e2 100644 --- a/src/lang/lang-fr.json +++ b/src/lang/lang-fr.json @@ -1945,5 +1945,10 @@ "authorizedRoutesInformations": "Une route par ligne. Documentation des routes", "canNotDisabledField": "Le champ ne peut pas être désactivé car il est vide et obligatoire", "registeredMailsIncluded": "Nombre de recommandés inclus :", - "cannotGenerateDepositListForMails": "Génération impossible pour les recommandés suivants :" + "cannotGenerateDepositListForMails": "Génération impossible pour les recommandés suivants :", + "accountNumberAlreadyUsed": "Le N° COCLICO est déjà utilisé par un autre site émetteur", + "rangeStartLargerThanRangeEnd": "Le début de la plage ne peut pas être plus grand que la fin de la plage", + "trackingNumberAlreadyUsed": "Le numéro de suivi est déjà utilisé", + "rangeOverlaps": "La plage chevauche une autre plage", + "siteIsUsedByActiveRange": "Impossible de supprimer le site émetteur : le site est utilisé par une plage active" }