diff --git a/app/Imports/CoderDojoEventsImport.php b/app/Imports/CoderDojoEventsImport.php index 5a1e2f7d2..367457081 100644 --- a/app/Imports/CoderDojoEventsImport.php +++ b/app/Imports/CoderDojoEventsImport.php @@ -22,6 +22,7 @@ public function parseDate($date) public function model(array $row): ?Model { + // Validate required fields if ( empty($row['activity_title']) || empty($row['name_of_organisation']) || @@ -37,16 +38,7 @@ public function model(array $row): ?Model } try { - $latitude = !empty($row['latitude']) ? trim($row['latitude']) : ''; - $longitude = !empty($row['longitude']) ? trim($row['longitude']) : ''; - $start_date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row['start_date']); - - // Check for existing event - $existingEvent = Event::where('title', trim($row['activity_title'])) - ->where('start_date', $start_date) - ->first(); - - $eventData = [ + $event = new Event([ 'status' => 'APPROVED', 'title' => trim($row['activity_title']), 'slug' => str_slug(trim($row['activity_title'])), @@ -62,27 +54,20 @@ public function model(array $row): ?Model 'country_iso' => trim($row['country']), 'picture' => !empty($row['image_path']) ? trim($row['image_path']) : '', 'pub_date' => now(), + 'created' => now(), 'updated' => now(), 'codeweek_for_all_participation_code' => 'cw20-coderdojo-eu', - 'start_date' => $start_date, + 'start_date' => \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row['start_date']), 'end_date' => \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row['end_date']), - 'geoposition' => ($latitude && $longitude) ? "$longitude,$latitude" : '', - 'longitude' => $longitude, - 'latitude' => $latitude, + 'geoposition' => (!empty($row['latitude']) && !empty($row['longitude'])) ? $row['latitude'] . ',' . $row['longitude'] : '', + 'longitude' => !empty($row['longitude']) ? trim($row['longitude']) : '', + 'latitude' => !empty($row['latitude']) ? trim($row['latitude']) : '', 'language' => !empty($row['language']) ? trim($row['language']) : 'nl', 'approved_by' => 19588, 'mass_added_for' => 'Excel', - ]; + ]); - if ($existingEvent) { - Log::info('Updating existing event: ' . $existingEvent->id); - $existingEvent->update($eventData); - $event = $existingEvent; - } else { - $eventData['created'] = now(); - $event = new Event($eventData); - $event->save(); - } + $event->save(); if (!empty($row['audience_comma_separated_ids'])) { $audiences = array_unique(array_map('trim', explode(',', $row['audience_comma_separated_ids']))); @@ -90,7 +75,7 @@ public function model(array $row): ?Model return is_numeric($id) && $id > 0 && $id <= 100; }); if (!empty($audiences)) { - $event->audiences()->sync($audiences); + $event->audiences()->attach($audiences); } } @@ -100,7 +85,7 @@ public function model(array $row): ?Model return is_numeric($id) && $id > 0 && $id <= 100; }); if (!empty($themes)) { - $event->themes()->sync($themes); + $event->themes()->attach($themes); } } @@ -110,4 +95,4 @@ public function model(array $row): ?Model return null; } } -} \ No newline at end of file +} diff --git a/resources/excel/20250113 Events CoderDojo Belgium January - February 2025.xlsx b/resources/excel/20250113 Events CoderDojo Belgium January - February 2025.xlsx index 5981dd04d..d8941c311 100644 Binary files a/resources/excel/20250113 Events CoderDojo Belgium January - February 2025.xlsx and b/resources/excel/20250113 Events CoderDojo Belgium January - February 2025.xlsx differ