From f4a3823d8861eda3e7f0ad9cad3af67a949c864d Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 23 Jul 2024 13:57:28 -0700 Subject: [PATCH] Handle empty strings for dates by converting them to null --- app/Importer/UserImporter.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/Importer/UserImporter.php b/app/Importer/UserImporter.php index 2cb6abd659..4a8d76b68e 100644 --- a/app/Importer/UserImporter.php +++ b/app/Importer/UserImporter.php @@ -67,6 +67,7 @@ class UserImporter extends ItemImporter $this->item['vip'] = ($this->fetchHumanBoolean(trim($this->findCsvMatch($row, 'vip'))) ==1 ) ? '1' : 0; $this->item['autoassign_licenses'] = ($this->fetchHumanBoolean(trim($this->findCsvMatch($row, 'autoassign_licenses'))) ==1 ) ? '1' : 0; + $this->handleEmptyStringsForDates(); $user_department = trim($this->findCsvMatch($row, 'department')); if ($this->shouldUpdateField($user_department)) { @@ -179,4 +180,22 @@ class UserImporter extends ItemImporter { $this->send_welcome = $send; } + + /** + * Since the findCsvMatch() method will set '' for columns that are present but empty, + * we need to set those empty strings to null to avoid passing bad data to the database + * (ie ending up with 0000-00-00 instead of the intended null). + * + * @return void + */ + private function handleEmptyStringsForDates(): void + { + if ($this->item['start_date'] === '') { + $this->item['start_date'] = null; + } + + if ($this->item['end_date'] === '') { + $this->item['end_date'] = null; + } + } }