Explorar el Código

fix importacao data admissao

Gustavo Zanatta hace 2 semanas
padre
commit
a4c3324e18

+ 36 - 4
app/Imports/AssociadoImport.php

@@ -2,11 +2,15 @@
 
 
 namespace App\Imports;
 namespace App\Imports;
 
 
+use Carbon\Carbon;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Log;
 use Maatwebsite\Excel\Concerns\ToCollection;
 use Maatwebsite\Excel\Concerns\ToCollection;
+use Maatwebsite\Excel\Concerns\WithCalculatedFormulas;
 use PhpOffice\PhpSpreadsheet\Shared\Date;
 use PhpOffice\PhpSpreadsheet\Shared\Date;
+use Throwable;
 
 
-class AssociadoImport implements ToCollection
+class AssociadoImport implements ToCollection, WithCalculatedFormulas
 {
 {
     public Collection $rows;
     public Collection $rows;
 
 
@@ -17,11 +21,39 @@ class AssociadoImport implements ToCollection
                 && !empty(trim((string) ($row[1] ?? '')))
                 && !empty(trim((string) ($row[1] ?? '')))
                 && !empty(trim((string) ($row[2] ?? '')));
                 && !empty(trim((string) ($row[2] ?? '')));
         })->map(function ($row) {
         })->map(function ($row) {
+            $registration = trim((string) $row[0]);
+
             return [
             return [
-                'registration' => trim((string) $row[0]),
-                'name'         => trim((string) $row[1]),
-                'admission_date' => Date::excelToDateTimeObject($row[2] ?? '')->format('Y-m-d'),
+                'registration'   => $registration,
+                'name'           => trim((string) $row[1]),
+                'admission_date' => $this->resolveAdmissionDate($row[2] ?? null, $registration),
             ];
             ];
         })->values();
         })->values();
     }
     }
+
+    private function resolveAdmissionDate($rawValue, string $registration): ?string
+    {
+        try {
+            if (is_int($rawValue) || is_float($rawValue)) {
+                return Date::excelToDateTimeObject($rawValue)->format('Y-m-d');
+            }
+
+            if (is_string($rawValue) && is_numeric($rawValue)) {
+                return Date::excelToDateTimeObject((float) $rawValue)->format('Y-m-d');
+            }
+
+            if (is_string($rawValue) && $rawValue !== '' && $rawValue[0] !== '=') {
+                return Carbon::parse($rawValue)->format('Y-m-d');
+            }
+        } catch (Throwable $e) {
+            // falls through to warning below
+        }
+
+        Log::warning('AssociadoImport: could not resolve admission_date, leaving null', [
+            'registration' => $registration,
+            'raw_value'    => is_scalar($rawValue) ? $rawValue : json_encode($rawValue),
+        ]);
+
+        return null;
+    }
 }
 }

+ 5 - 6
app/Services/AssociadoImportService.php

@@ -7,8 +7,7 @@ use App\Enums\UserTypeEnum;
 use App\Imports\AssociadoImport;
 use App\Imports\AssociadoImport;
 use App\Models\User;
 use App\Models\User;
 use Carbon\Carbon;
 use Carbon\Carbon;
-use Illuminate\Support\Facades\Hash;
-use Illuminate\Support\Str;
+use Illuminate\Support\Facades\Log;
 use Maatwebsite\Excel\Facades\Excel;
 use Maatwebsite\Excel\Facades\Excel;
 
 
 class AssociadoImportService
 class AssociadoImportService
@@ -54,7 +53,7 @@ class AssociadoImportService
                     $changed = true;
                     $changed = true;
                 }
                 }
 
 
-                if($user->admission_date?->toDateString() !== $admissionDate) {
+                if ($admissionDate !== null && $user->admission_date?->toDateString() !== $admissionDate) {
                     $user->admission_date = $admissionDate;
                     $user->admission_date = $admissionDate;
                     $changed = true;
                     $changed = true;
                 }
                 }
@@ -77,7 +76,6 @@ class AssociadoImportService
             } else {
             } else {
                 User::create([
                 User::create([
                     'name'           => $name,
                     'name'           => $name,
-                    'password'       => Hash::make(Str::random(32)),
                     'type'           => UserTypeEnum::ASSOCIADO,
                     'type'           => UserTypeEnum::ASSOCIADO,
                     'status'         => UserStatusEnum::ACTIVE,
                     'status'         => UserStatusEnum::ACTIVE,
                     'registration'   => $registration,
                     'registration'   => $registration,
@@ -98,12 +96,14 @@ class AssociadoImportService
                 'excluded_at' => now(),
                 'excluded_at' => now(),
             ]);
             ]);
 
 
-        return [
+        $result = [
             'total'       => $rows->count(),
             'total'       => $rows->count(),
             'created'     => $created,
             'created'     => $created,
             'updated'     => $updated,
             'updated'     => $updated,
             'inactivated' => $inactivated,
             'inactivated' => $inactivated,
         ];
         ];
+
+        return $result;
     }
     }
 
 
     public function syncAfastamentosFromExcel(string $filePath, int $byUserId): array
     public function syncAfastamentosFromExcel(string $filePath, int $byUserId): array
@@ -147,7 +147,6 @@ class AssociadoImportService
             } else {
             } else {
                 User::create([
                 User::create([
                     'name'                 => $name,
                     'name'                 => $name,
-                    'password'             => Hash::make(Str::random(32)),
                     'type'                 => UserTypeEnum::ASSOCIADO,
                     'type'                 => UserTypeEnum::ASSOCIADO,
                     'status'               => UserStatusEnum::ON_LEAVE,
                     'status'               => UserStatusEnum::ON_LEAVE,
                     'registration'         => $registration,
                     'registration'         => $registration,

+ 28 - 0
database/migrations/2026_08_24_000001_make_password_nullable_in_users_table.php

@@ -0,0 +1,28 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+    public function up(): void
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->string('password')->nullable()->change();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->string('password')->nullable(false)->change();
+        });
+    }
+};