From b0eafd7dcb9e1159f47f3f06ac701b9bd3fd3429 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Fri, 2 Oct 2020 14:02:22 +0200
Subject: [PATCH] Correction de bug sur la gestion des dates

---
 admin/actions/test.php                      | 2 +-
 admin/src/BddAdmin/Driver/Oracle/Driver.php | 6 ++----
 admin/src/BddAdmin/Table.php                | 6 +++---
 admin/src/DataGen.php                       | 6 +++---
 data/ddl_config.php                         | 7 ++-----
 data/nomenclatures.php                      | 8 ++++----
 6 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/admin/actions/test.php b/admin/actions/test.php
index 1fd9848ffe..840733ef29 100644
--- a/admin/actions/test.php
+++ b/admin/actions/test.php
@@ -1,4 +1,4 @@
 <?php
 
-$bdd = $oa->getBdd();
 
+$oa->exec('UnicaenTbl build-procedures');
\ No newline at end of file
diff --git a/admin/src/BddAdmin/Driver/Oracle/Driver.php b/admin/src/BddAdmin/Driver/Oracle/Driver.php
index 1d6070477d..04c1789e29 100644
--- a/admin/src/BddAdmin/Driver/Oracle/Driver.php
+++ b/admin/src/BddAdmin/Driver/Oracle/Driver.php
@@ -67,7 +67,7 @@ class Driver implements DriverInterface
             throw $this->sendException($error);
         }
 
-        $this->exec('ALTER SESSION SET NLS_DATE_FORMAT = \'yyyy-mm-dd\'');
+        $this->exec('ALTER SESSION SET NLS_DATE_FORMAT = \'yyyy-mm-dd hh24:mi:ss\'');
         $this->exec('ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = \'yyyy-mm-dd"T"hh24:mi:ss\'');
         $this->exec('ALTER SESSION SET NLS_NUMERIC_CHARACTERS=". "');
 
@@ -335,10 +335,8 @@ class Driver implements DriverInterface
             case Bdd::TYPE_STRING:
                 return (string)$variable;
             case Bdd::TYPE_DATE:
-                $date = \DateTime::createFromFormat('Y-m-d', $variable);
+                $date = \DateTime::createFromFormat('Y-m-d H:i:s', $variable);
                 if ($date instanceof \DateTime) {
-                    $date->setTime(0, 0, 0);
-
                     return $date;
                 } else {
                     return $variable;
diff --git a/admin/src/BddAdmin/Table.php b/admin/src/BddAdmin/Table.php
index aac7796ccc..efb78871db 100644
--- a/admin/src/BddAdmin/Table.php
+++ b/admin/src/BddAdmin/Table.php
@@ -455,8 +455,8 @@ class Table
                 foreach ($old as $c => $ov) {
                     $newc = isset($new[$c]) ? $new[$c] : null;
                     $oldc = isset($old[$c]) ? $old[$c] : null;
-                    if ($newc instanceof \DateTime) $newc = $newc->format('Y-m-d');
-                    if ($oldc instanceof \DateTime) $oldc = $oldc->format('Y-m-d');
+                    if ($newc instanceof \DateTime) $newc = $newc->format('Y-m-d H:i:s');
+                    if ($oldc instanceof \DateTime) $oldc = $oldc->format('Y-m-d H:i:s');
                     if ($newc != $oldc && array_key_exists($c, $new) && $c != 'ID') {
                         $ok = empty($options['update-cols']); // OK par défaut si une liste n'a pas été établie manuellement
 
@@ -507,7 +507,7 @@ class Table
         foreach ($keyArray as $v) {
             if ($keyVal != '') $keyVal .= '_';
             if ($v instanceof \DateTime) {
-                $keyVal .= $v->format('Y-m-d');
+                $keyVal .= $v->format('Y-m-d-H-i-s');
             } else {
                 $keyVal .= (string)$v;
             }
diff --git a/admin/src/DataGen.php b/admin/src/DataGen.php
index 892cd0322c..f9d9045b03 100644
--- a/admin/src/DataGen.php
+++ b/admin/src/DataGen.php
@@ -450,7 +450,7 @@ class DataGen
         foreach ($data as $i => $line) {
             foreach ($line as $col => $val) {
                 if (isset($ddl['columns'][$col]) && $ddl['columns'][$col]['type'] == \BddAdmin\Bdd::TYPE_DATE && !empty($val) && is_string($val)) {
-                    $data[$i][$col] = \DateTime::createFromFormat('Y-m-d', $val);
+                    $data[$i][$col] = \DateTime::createFromFormat('Y-m-d H:i:s', $val);
                 }
             }
 
@@ -492,8 +492,8 @@ class DataGen
     {
         $annees = [];
         for ($a = 1950; $a < 2100; $a++) {
-            $dateDebut = \DateTime::createFromFormat('Y-m-d:H:i:s', $a . '-09-01:00:00:00');
-            $dateFin   = \DateTime::createFromFormat('Y-m-d:H:i:s', ($a + 1) . '-08-31:00:00:00');
+            $dateDebut = \DateTime::createFromFormat('Y-m-d H:i:s', $a . '-09-01 00:00:00');
+            $dateFin   = \DateTime::createFromFormat('Y-m-d H:i:s', ($a + 1) . '-08-31 00:00:00');
 
             $anneeRef = $this->getAnneeCourante();
             $active   = ($a >= $anneeRef && $a < $anneeRef + 3);
diff --git a/data/ddl_config.php b/data/ddl_config.php
index 709e848e88..2f2e996408 100644
--- a/data/ddl_config.php
+++ b/data/ddl_config.php
@@ -9,8 +9,8 @@ return [
 
     ]],
     'materialized-view' => ['includes' => [
-
-    ]],
+        
+    ], 'excludes'                      => ['MV_EXT_SERVICE']],
     'view'              => ['includes' => [
 
     ]],
@@ -22,8 +22,5 @@ return [
     ]],
     'sequence'          => ['includes' => [
 
-    ]],
-    'materialized-view' => ['includes' => [
-
     ]],
 ];
\ No newline at end of file
diff --git a/data/nomenclatures.php b/data/nomenclatures.php
index 94123bf87f..1370386a81 100644
--- a/data/nomenclatures.php
+++ b/data/nomenclatures.php
@@ -483,14 +483,14 @@ return [
         [
             'ID'                 => 1,
             'VALEUR'             => 40.91,
-            'HISTO_CREATION'     => '2010-07-01',
-            'HISTO_MODIFICATION' => '2014-06-25',
+            'HISTO_CREATION'     => '2010-07-01 00:00:00',
+            'HISTO_MODIFICATION' => '2014-06-25 00:00:00',
         ],
         [
             'ID'                 => 2,
             'VALEUR'             => 41.41,
-            'HISTO_CREATION'     => '2017-04-28',
-            'HISTO_MODIFICATION' => '2017-04-28',
+            'HISTO_CREATION'     => '2017-04-28 00:00:00',
+            'HISTO_MODIFICATION' => '2017-04-28 00:00:00',
         ],
     ],
 
-- 
GitLab