From 9a49344c2dc11986276de93c0f3f1624e9d9fc3f Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Mon, 19 Mar 2018 12:39:22 +0100
Subject: [PATCH] FIX #210 improve check for duration_current_use

---
 .../Views/doctypes-administration.component.html      |  3 ++-
 src/app/doctype/controllers/DoctypeController.php     | 11 +++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/apps/maarch_entreprise/Views/doctypes-administration.component.html b/apps/maarch_entreprise/Views/doctypes-administration.component.html
index e4060352eaa..4d5f7382fcf 100644
--- a/apps/maarch_entreprise/Views/doctypes-administration.component.html
+++ b/apps/maarch_entreprise/Views/doctypes-administration.component.html
@@ -269,7 +269,8 @@
                                         <div class="col-sm-6">
                                             <mat-form-field>
                                                 <input matInput [(ngModel)]="currentType.duration_current_use" name="duration_current_use" id="duration_current_use" title="{{lang.durationCurrentUse}}"
-                                                    type="number" placeholder="{{lang.durationCurrentUse}}" pattern="^[0-9]*$">
+                                                    type="text" placeholder="{{lang.durationCurrentUse}}" pattern="^[0-9]*$">
+                                                    <!-- pattern without required attribute must be type text -->
                                             </mat-form-field>
                                         </div>
                                     </div>
diff --git a/src/app/doctype/controllers/DoctypeController.php b/src/app/doctype/controllers/DoctypeController.php
index c8655be706e..cb8a2c3f329 100644
--- a/src/app/doctype/controllers/DoctypeController.php
+++ b/src/app/doctype/controllers/DoctypeController.php
@@ -90,6 +90,9 @@ class DoctypeController
         if (!empty($errors)) {
             return $response->withStatus(500)->withJson(['errors' => $errors]);
         }
+        if (empty($data['duration_current_use'])) {
+            $data['duration_current_use'] = null;
+        }
 
         $data = DoctypeController::manageValue($data);
         $secondLevelInfo = SecondLevelModel::getById(['select' => ['doctypes_first_level_id'], 'id' => $data['doctypes_second_level_id']]);
@@ -166,6 +169,9 @@ class DoctypeController
         if (!empty($errors)) {
             return $response->withStatus(500)->withJson(['errors' => $errors]);
         }
+        if (empty($data['duration_current_use'])) {
+            $data['duration_current_use'] = null;
+        }
         $data = DoctypeController::manageValue($data);
         $secondLevelInfo                 = SecondLevelModel::getById(['select' => ['doctypes_first_level_id'], 'id' => $data['doctypes_second_level_id']]);
         if (empty($secondLevelInfo)) {
@@ -371,6 +377,11 @@ class DoctypeController
             $aArgs['delay2'] < 0) {
             $errors[]= 'Invalid delay2 value';
         }
+        if (Validator::notEmpty()->validate($aArgs['duration_current_use']) &&
+            (!Validator::intVal()->validate($aArgs['duration_current_use']) ||
+            $aArgs['duration_current_use'] < 0)) {
+            $errors[]= 'Invalid duration_current_use value';
+        }
 
         return $errors;
     }
-- 
GitLab