ldc-com-app-bo/app/Imports/AppUserImport.php
Vincent BRIDIER 777d3e0e86 Multiple fix
2023-07-13 08:34:54 +00:00

66 lines
1.5 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()
{
return 'email';
}
/**
* @return array
*/
public function getCsvSettings(): array
{
return [
'delimiter' => ";"
];
}
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
if (!isset($row[0]) || !isset($row[1]) || !isset($row[2]) || !isset($row[3])) {
return null;
}
$user = new AppUser([
'email' => $row[3],
'lastname' => ucfirst(strtolower($row[1])),
'firstname' => ucfirst(strtolower($row[2])),
'password' => '',
'status' => 1,
'role' => AppUserRolesEnum::user(),
]);
if ($user) {
$password = Str::random(10);
$user->password = Hash::make($password);
$user->save();
Mail::to($user->email)->send(new AccountCreated($user, $password));
}
$user->saveOrFail();
return $user;
}
}