ldc-com-app-bo/app/Imports/AppUserImport.php
2025-05-21 16:29:18 +02:00

64 lines
1.7 KiB
PHP

<?php
namespace App\Imports;
use App\Mail\AccountCreated;
use App\Enums\AppUserRolesEnum;
use App\Models\AppUser;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithUpserts;
use Maatwebsite\Excel\Concerns\WithCustomCsvSettings;
class AppUserImport implements ToModel, WithUpserts, WithCustomCsvSettings
{
/**
* @return string|array
*/
public function uniqueBy(): string|array
{
return 'email';
}
/**
* @return array
*/
public function getCsvSettings(): array
{
return [
'delimiter' => ";"
];
}
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row): \Illuminate\Database\Eloquent\Model|null
{
if (!isset($row[0]) || !isset($row[1]) || !isset($row[2]) || !isset($row[3])) {
return null;
}
$password = Hash::make(Str::random(10));
$user = new AppUser([
'email' => $row[3],
'lastname' => ucfirst(strtolower($row[1])),
'firstname' => ucfirst(strtolower($row[2])),
'password' => $password,
'status' => 1,
'role' => AppUserRolesEnum::user,
]);
$user->saveOrFail();
Mail::to($user->email)->send(new AccountCreated([
'email' => $user->email,
'lastname' => $user->lastname,
'firstname' => $user->firstname,
'password' => $user->password,
]));
return $user;
}
}