Эх сурвалжийг харах

feat: :sparkles: feat(sincronização da datat de admissão dos associados) Foi adicionado a opção de sincronização com a data de admissao do associado

Adicionada a sincronização da data de admissão dos associados durante a importação do Excel.

fase:dev | origin:escopo
kayo henrique 3 долоо хоног өмнө
parent
commit
3e6a7c4033

+ 4 - 1
app/Imports/AssociadoImport.php

@@ -4,6 +4,7 @@ namespace App\Imports;
 
 use Illuminate\Support\Collection;
 use Maatwebsite\Excel\Concerns\ToCollection;
+use PhpOffice\PhpSpreadsheet\Shared\Date;
 
 class AssociadoImport implements ToCollection
 {
@@ -13,11 +14,13 @@ class AssociadoImport implements ToCollection
     {
         $this->rows = $rows->skip(1)->values()->filter(function ($row) {
             return !empty(trim((string) ($row[0] ?? '')))
-                && !empty(trim((string) ($row[1] ?? '')));
+                && !empty(trim((string) ($row[1] ?? '')))
+                && !empty(trim((string) ($row[2] ?? '')));
         })->map(function ($row) {
             return [
                 'registration' => trim((string) $row[0]),
                 'name'         => trim((string) $row[1]),
+                'admission_date' => Date::excelToDateTimeObject($row[2] ?? '')->format('Y-m-d'),
             ];
         })->values();
     }

+ 9 - 2
app/Services/AssociadoImportService.php

@@ -15,11 +15,12 @@ class AssociadoImportService
 {
     public function syncFromExcel(string $filePath): array
     {
+
         $import = new AssociadoImport();
         Excel::import($import, $filePath);
         $rows = $import->rows ?? collect();
 
-        $today      = Carbon::today()->toDateString();
+        // $today      = Carbon::today()->toDateString();
         $expiryDate = Carbon::now()->endOfMonth()->toDateString();
 
         $existing = User::where('type', UserTypeEnum::ASSOCIADO)
@@ -35,6 +36,7 @@ class AssociadoImportService
         foreach ($rows as $row) {
             $registration = $row['registration'];
             $name         = $row['name'];
+            $admissionDate = $row['admission_date'] ?? null;
 
             if (isset($seenRegistrations[$registration])) {
                 continue;
@@ -52,6 +54,11 @@ class AssociadoImportService
                     $changed = true;
                 }
 
+                if($user->admission_date?->toDateString() !== $admissionDate) {
+                    $user->admission_date = $admissionDate;
+                    $changed = true;
+                }
+
                 if ($user->status !== UserStatusEnum::ACTIVE) {
                     $user->status      = UserStatusEnum::ACTIVE;
                     $user->excluded_at = null;
@@ -74,7 +81,7 @@ class AssociadoImportService
                     'type'           => UserTypeEnum::ASSOCIADO,
                     'status'         => UserStatusEnum::ACTIVE,
                     'registration'   => $registration,
-                    'admission_date' => $today,
+                    'admission_date' => $admissionDate,
                     'expiry_date'    => $expiryDate,
                 ]);