File: /var/www/ivs.kaunokolegija.lt/laravel/app/Imports/AlumnySheetOneImport.php
<?php
namespace App\Imports;
use App\Models\Alumny;
use App\Models\Department;
use App\Models\StudyProgram;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\SkipsErrors;
use Maatwebsite\Excel\Concerns\SkipsOnError;
use Maatwebsite\Excel\Concerns\ToCollection;
class AlumnySheetOneImport implements ToCollection, SkipsOnError
{
use SkipsErrors;
public function collection(Collection $rows)
{
function clean($value) {
return isset($value) ? trim($value) : null;
}
foreach ($rows->skip(1) as $row) {
$firstName = clean($row[0]);
$lastName = clean($row[1]);
$graduated = clean($row[2]);
$departmentName = clean($row[3]);
$studyProgramName = clean($row[4]);
$phone = clean($row[5]);
$email = clean($row[6]);
$graduated = (preg_match('/^\d{4}$/', $graduated)) ? "{$graduated}-01-01" : null;
if (!$firstName || !$lastName || !$graduated || !$email) continue;
$fullName = trim("{$firstName} {$lastName}");
$department = Department::firstOrCreate(['name' => $departmentName]);
$studyProgram = StudyProgram::firstOrCreate(['name' => $studyProgramName]);
$alumny = Alumny::updateOrCreate(
['name' => $fullName],
[
'graduated' => $graduated,
'phone' => $phone,
'email' => $email
]
);
$alumny->faculties()->syncWithoutDetaching([$department->id]);
$alumny->study_programs()->syncWithoutDetaching([$studyProgram->id]);
}
}
}