diff --git a/migration/19.12/1912.sql b/migration/19.12/1912.sql index e7a22caaca67f66abc872d66bfa9f0b856defbbf..36cc2a74a748283b7a501bb283fdbb7ba750cb81 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 ecda6d92ce74391f938d916203f36c8bf47d0627..d71eb7dace6b3d7f99f6407e567b86af446d24dc 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 9da72952637e9f99b3e43d3dedc7728007a0c9a6..4c21127bcc0a11cb9bae1ac0d853ae0484fc7145 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 7fc03312ebce483ede899a38912cd0c1caeff4e1..3fe3715bb7d9e29a6a37a641e488703a9ccb69e6 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 441ee70329a93cb573a555f5953a1f835bb411d3..b9415c8d42157a633fe85ee71648b345ab3a038c 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 f41df00aec7cdf61813fcc98621d90fa554a96c6..925d2f7a87517a669f0f5868829eefa683336799 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 d293823fa8c30f8f013c402be3240047d19b8a68..be341578c46f3aca82348fba01516a6d653d5fef 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 aa199b51da001c407670b8523502e91abdef352e..a0d516d67ec75bc2d46c374b6a6a056cbdd8fdef 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