From 5516277ded3f17b0e430168b7962db7d2690a310 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Wed, 9 Oct 2019 10:56:28 +0100 Subject: [PATCH] FEAT #11907 TIME 1 check priorities with same time limit --- migration/19.12/1912.sql | 4 ++ sql/data_fr.sql | 2 +- sql/structure.sql | 2 +- .../controllers/PriorityController.php | 14 +++++- .../priority/models/PriorityModelAbstract.php | 43 +++++++++++++------ src/core/lang/lang-en.php | 2 + src/core/lang/lang-fr.php | 2 + src/core/lang/lang-nl.php | 2 + 8 files changed, 53 insertions(+), 18 deletions(-) diff --git a/migration/19.12/1912.sql b/migration/19.12/1912.sql index e7a22caaca6..36cc2a74a74 100644 --- a/migration/19.12/1912.sql +++ b/migration/19.12/1912.sql @@ -363,7 +363,11 @@ DROP TABLE IF EXISTS foldertypes_doctypes_level1; DROP TABLE IF EXISTS foldertypes_indexes; ALTER TABLE doctypes DROP COLUMN IF EXISTS coll_id; DROP TABLE IF EXISTS mlb_doctype_ext; + +/* PRIORITIES */ ALTER TABLE priorities DROP COLUMN IF EXISTS working_days; +UPDATE priorities SET delays = 30 WHERE delays IS NULL; +ALTER TABLE priorities ALTER COLUMN delays SET NOT NULL; /* RE CREATE VIEWS */ CREATE OR REPLACE VIEW res_view_letterbox AS diff --git a/sql/data_fr.sql b/sql/data_fr.sql index ecda6d92ce7..d71eb7dace6 100755 --- a/sql/data_fr.sql +++ b/sql/data_fr.sql @@ -1600,7 +1600,7 @@ Select setval('templates_seq', (select max(template_id)+1 from templates), false --PRIORITES ------------ TRUNCATE TABLE priorities; -INSERT INTO priorities (id, label, color, delays, "order") VALUES ('poiuytre1357nbvc', 'Normal', '#009dc5', 0, 1); +INSERT INTO priorities (id, label, color, delays, "order") VALUES ('poiuytre1357nbvc', 'Normal', '#009dc5', 30, 1); INSERT INTO priorities (id, label, color, delays, "order") VALUES ('poiuytre1379nbvc', 'Urgent', '#ffa500', 8, 2); INSERT INTO priorities (id, label, color, delays, "order") VALUES ('poiuytre1391nbvc', 'Très urgent', '#ff0000', 4, 3); diff --git a/sql/structure.sql b/sql/structure.sql index 9da72952637..4c21127bcc0 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -1259,7 +1259,7 @@ CREATE TABLE priorities id character varying(16) NOT NULL, label character varying(128) NOT NULL, color character varying(128) NOT NULL, - delays integer, + delays integer NOT NULL, "order" integer, CONSTRAINT priorities_pkey PRIMARY KEY (id) ) diff --git a/src/app/priority/controllers/PriorityController.php b/src/app/priority/controllers/PriorityController.php index 7fc03312ebc..3fe3715bb7d 100755 --- a/src/app/priority/controllers/PriorityController.php +++ b/src/app/priority/controllers/PriorityController.php @@ -48,12 +48,17 @@ class PriorityController $data = $request->getParams(); $check = Validator::stringType()->notEmpty()->validate($data['label']); $check = $check && Validator::stringType()->notEmpty()->validate($data['color']); - $check = $check && (Validator::intVal()->notEmpty()->validate($data['delays']) || $data['delays'] == null || $data['delays'] == 0); + $check = $check && (Validator::intVal()->notEmpty()->validate($data['delays']) || $data['delays'] == 0); if (!$check) { return $response->withStatus(400)->withJson(['errors' => 'Body (label, color or delays) is empty or type is incorrect']); } + $delayAlreadySet = PriorityModel::getByDelays(['select' => [1], 'delays' => (int)$data['delays']]); + if (!empty($delayAlreadySet)) { + return $response->withStatus(400)->withJson(['errors' => _PRIORITY_DELAY_ALREADY_SET]); + } + $id = PriorityModel::create($data); HistoryController::add([ 'tableName' => 'priorities', @@ -76,12 +81,17 @@ class PriorityController $data = $request->getParams(); $check = Validator::stringType()->notEmpty()->validate($data['label']); $check = $check && Validator::stringType()->notEmpty()->validate($data['color']); - $check = $check && (Validator::intVal()->notEmpty()->validate($data['delays']) || $data['delays'] == null); + $check = $check && (Validator::intVal()->notEmpty()->validate($data['delays']) || $data['delays'] == 0); if (!$check) { return $response->withStatus(400)->withJson(['errors' => 'Body (label, color or delays) is empty or type is incorrect']); } + $delayAlreadySet = PriorityModel::getByDelays(['select' => [1], 'delays' => $data['delays']]); + if (!empty($delayAlreadySet)) { + return $response->withStatus(400)->withJson(['errors' => _PRIORITY_DELAY_ALREADY_SET]); + } + $data['id'] = $aArgs['id']; PriorityModel::update($data); diff --git a/src/app/priority/models/PriorityModelAbstract.php b/src/app/priority/models/PriorityModelAbstract.php index 441ee70329a..b9415c8d421 100755 --- a/src/app/priority/models/PriorityModelAbstract.php +++ b/src/app/priority/models/PriorityModelAbstract.php @@ -44,10 +44,10 @@ abstract class PriorityModelAbstract ValidatorModel::arrayType($aArgs, ['select']); $aPriority = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['priorities'], - 'where' => ['id = ?'], - 'data' => [$aArgs['id']] + 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'table' => ['priorities'], + 'where' => ['id = ?'], + 'data' => [$aArgs['id']] ]); if (empty($aPriority[0])) { @@ -67,10 +67,10 @@ abstract class PriorityModelAbstract DatabaseModel::insert([ 'table' => 'priorities', 'columnsValues' => [ - 'id' => $id, - 'label' => $aArgs['label'], - 'color' => $aArgs['color'], - 'delays' => $aArgs['delays'], + 'id' => $id, + 'label' => $aArgs['label'], + 'color' => $aArgs['color'], + 'delays' => $aArgs['delays'], ] ]); @@ -86,12 +86,12 @@ abstract class PriorityModelAbstract DatabaseModel::update([ 'table' => 'priorities', 'set' => [ - 'label' => $aArgs['label'], - 'color' => $aArgs['color'], - 'delays' => $aArgs['delays'], + 'label' => $aArgs['label'], + 'color' => $aArgs['color'], + 'delays' => $aArgs['delays'], ], - 'where' => ['id = ?'], - 'data' => [$aArgs['id']] + 'where' => ['id = ?'], + 'data' => [$aArgs['id']] ]); return true; @@ -128,4 +128,19 @@ abstract class PriorityModelAbstract return true; } -} \ No newline at end of file + + public static function getByDelays(array $aArgs) + { + ValidatorModel::intType($aArgs, ['delays']); + ValidatorModel::arrayType($aArgs, ['select']); + + $aPriority = PriorityModel::get([ + 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'table' => ['priorities'], + 'where' => ['delays = ?'], + 'data' => [$aArgs['delays']] + ]); + + return $aPriority; + } +} diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index f41df00aec7..925d2f7a875 100755 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -500,3 +500,5 @@ define("_CUSTOMFIELDS_SUPPRESSION", "Custom field suppression"); define("_INDEXINGMODEL_CREATION", "Indexing model creation"); define("_INDEXINGMODEL_MODIFICATION", "Indexing model modification"); define("_INDEXINGMODEL_SUPPRESSION", "Indexing model suppression"); + +define("_PRIORITY_DELAY_ALREADY_SET", "This time limit is already set to another priority"); \ No newline at end of file diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index d293823fa8c..be341578c46 100755 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -499,3 +499,5 @@ define("_CUSTOMFIELDS_SUPPRESSION", "Champ personnalisé supprimé"); define("_INDEXINGMODEL_CREATION", "Modèle d'enregistrement créé"); define("_INDEXINGMODEL_MODIFICATION", "Modèle d'enregistrement modifié"); define("_INDEXINGMODEL_SUPPRESSION", "Modèle d'enregistrement supprimé"); + +define("_PRIORITY_DELAY_ALREADY_SET", "Ce délai de traitement est déjà défini pour une autre priorité"); diff --git a/src/core/lang/lang-nl.php b/src/core/lang/lang-nl.php index aa199b51da0..a0d516d67ec 100755 --- a/src/core/lang/lang-nl.php +++ b/src/core/lang/lang-nl.php @@ -505,3 +505,5 @@ define("_CUSTOMFIELDS_SUPPRESSION", "Custom field suppression_TO_TRANSLATE"); define("_INDEXINGMODEL_CREATION", "Indexing model creation_TO_TRANSLATE"); define("_INDEXINGMODEL_MODIFICATION", "Indexing model modification_TO_TRANSLATE"); define("_INDEXINGMODEL_SUPPRESSION", "Indexing model suppression_TO_TRANSLATE"); + +define("_PRIORITY_DELAY_ALREADY_SET", "Ce délai de traitement est déjà paramétré pour une autre priorité_TO_TRANSLATE"); \ No newline at end of file -- GitLab