From eafedc489d811182ace83e715bf44b408d85cf65 Mon Sep 17 00:00:00 2001
From: Laurent Giovannoni <laurent.giovannoni@maarch.org>
Date: Wed, 2 Sep 2015 09:42:48 +0000
Subject: [PATCH] FEAT #2772 compute process_limit_date on WS

---
 core/trunk/core/class/resources_controler.php | 66 +++++++++++++++++++
 1 file changed, 66 insertions(+)

diff --git a/core/trunk/core/class/resources_controler.php b/core/trunk/core/class/resources_controler.php
index 45ab05b8143..0014767babc 100755
--- a/core/trunk/core/class/resources_controler.php
+++ b/core/trunk/core/class/resources_controler.php
@@ -445,6 +445,26 @@ class resources_controler
                 $queryExtValuesFinal = '('; 
                 $parameters = array();
 	            $db = new Database();
+                if ($table == 'mlb_coll_ext') {
+        		$processLimitDate = $this->retrieveProcessLimitDate($resId);
+        		//echo $processLimitDate;
+        		}
+        		for ($i=0;$i<count($data);$i++) {
+            		if ($data[$i]['column'] == 'process_limit_date') {
+            		    $findProcessLimitDate = true;
+            		}
+            	}
+        		if (!$findProcessLimitDate && $processLimitDate <> '') {
+            		array_push(
+            		    $data,
+            		    array(
+            			'column' => 'process_limit_date',
+            			'value' => $processLimitDate,
+            			'type' => 'date',
+            		    )
+            		);
+        		}
+		        //var_dump($data);
 	            for ($i=0;$i<count($data);$i++) {
 	                if (strtoupper($data[$i]['type']) == 'INTEGER' || strtoupper($data[$i]['type']) == 'FLOAT') {
 	                    if ($data[$i]['value'] == '') {
@@ -555,6 +575,52 @@ class resources_controler
             return $returnResArray;
         }
     }
+
+    #####################################
+    ## Retrieve process_limit_date for resource in extension table if mlb
+    #####################################
+    public function retrieveProcessLimitDate($resId)
+    {
+        $processLimitDate = '';
+        if ($resId <> '') {
+            $db = new Database();
+            $stmt = $db->query("select creation_date, admission_date, "
+                . "type_id from res_view_letterbox where res_id = ?"
+		        , array($resId)
+            );
+            $line = $stmt->fetchObject();
+            if ($line->type_id <> '') {
+                $typeId = $line->type_id;
+                $admissionDate = $line->admission_date;
+                $creationDate = $line->creation_date;
+                $stmtDelay = $db->query("select process_delay from mlb_doctype_ext where type_id = ?" 
+                    , array($line->type_id)
+                );
+                $lineDelay = $stmtDelay->fetchObject();
+                $delay = $lineDelay->process_delay;
+            }
+            if ($admissionDate == '') {
+                $dateToCompute = $creationDate;
+            } else {
+                $dateToCompute = $admissionDate;
+            }
+            if ($delay == 0) {
+                $delay = 5;
+            }
+            require_once('core/class/class_alert_engine.php');
+            $alert_engine = new alert_engine();
+            if (isset($dateToCompute) && !empty($dateToCompute)) {
+                $convertedDate = $alert_engine->dateFR2Time(
+                    str_replace("-", "/", $db->format_date_db($dateToCompute))
+                );
+                $date = $alert_engine->WhenOpenDay($convertedDate, $delay);
+            } else {
+                $date = $alert_engine->date_max_treatment($delay, false);
+            }
+            $processLimitDate = $db->dateformat($date, '-');
+        }
+        return $processLimitDate;
+    }
     
     function Demo_searchResources($searchParams)
     {
-- 
GitLab