ldc-com-app-bo/app/Imports/UsersImport.php
Vincent BRIDIER aed37bfad3
phpcbf
2022-09-29 10:09:43 +02:00

62 lines
1.5 KiB
PHP

<?php
namespace App\Imports;
use App\Mail\AccountCreated;
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 UsersImport implements ToModel, WithUpserts, WithCustomCsvSettings
{
/**
* @return string|array
*/
public function uniqueBy()
{
return 'email';
}
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],
'surname' => strtoupper($row[1]),
'firstname' => ucfirst(strtolower($row[2])),
'password' => '',
'activated' => 1,
'role' => 'USER',
'authorizedFolders' => json_encode([])
]);
if ($user) {
$password = Str::random(10);
$user->password = Hash::make($password);
$user->save();
Mail::to($user->email)->send(new AccountCreated($user, $password));
}
return $user;
}
}