forked from aslan/applicant-site
99 lines
3.5 KiB
PHP
99 lines
3.5 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace App\Exports;
|
|||
|
|
|||
|
use App\Models\Direction;
|
|||
|
use Maatwebsite\Excel\Concerns\FromQuery;
|
|||
|
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
|
|||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
|||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
|||
|
|
|||
|
class DirectionsExport implements WithMapping, FromQuery, WithHeadings, ShouldAutoSize
|
|||
|
{
|
|||
|
public function query()
|
|||
|
{
|
|||
|
return Direction::query();
|
|||
|
}
|
|||
|
|
|||
|
public function headings(): array
|
|||
|
{
|
|||
|
return [
|
|||
|
'Код',
|
|||
|
'Имя',
|
|||
|
'Кафедры',
|
|||
|
'Ур-нь обр.',
|
|||
|
'Форма обр.',
|
|||
|
'бюджетные места',
|
|||
|
'квота',
|
|||
|
'платн. места',
|
|||
|
'ст-ть платн. мест',
|
|||
|
'период',
|
|||
|
'Профиль подготовки',
|
|||
|
'вступительные испытания ЕГЕ (Обязательное)',
|
|||
|
'вступительные испытания ЕГЕ (По выбору)',
|
|||
|
'вступительные испытания СПО',
|
|||
|
'вступительные испытания Магистратура'
|
|||
|
];
|
|||
|
}
|
|||
|
|
|||
|
public function map($row): array
|
|||
|
{
|
|||
|
return [
|
|||
|
[
|
|||
|
$row->code,
|
|||
|
$row->name,
|
|||
|
$row->department->name,
|
|||
|
$row->educationLevel->name,
|
|||
|
$row->educationForm->name,
|
|||
|
$row->budget_places,
|
|||
|
$row->quota,
|
|||
|
$row->paid_places,
|
|||
|
$row->cost_paid_place,
|
|||
|
$row->period,
|
|||
|
implode("; ", $row->directionProfiles),
|
|||
|
implode("; ", $row->egeCompulsory),
|
|||
|
implode("; ", $row->egeOptional),
|
|||
|
implode("; ", $row->spo),
|
|||
|
implode("; ", $row->magistracy),
|
|||
|
]
|
|||
|
// $row->entranceExaminations->name,
|
|||
|
];
|
|||
|
}
|
|||
|
|
|||
|
public function prepareRows($rows)
|
|||
|
{
|
|||
|
return $rows->transform(function ($direction) {
|
|||
|
$profilesNames = [];
|
|||
|
foreach ($direction->directionProfiles as $profile) {
|
|||
|
$profilesNames[] = $profile->name;
|
|||
|
}
|
|||
|
$direction->directionProfiles = $profilesNames;
|
|||
|
|
|||
|
$egeCompulsory = [];
|
|||
|
$egeOptional = [];
|
|||
|
$spo = [];
|
|||
|
$magistracy = [];
|
|||
|
foreach ($direction->entranceExaminations as $examination) {
|
|||
|
$subject = $examination->subject->name;
|
|||
|
$scores = $examination->scores;
|
|||
|
if ($examination->examinationType->name === 'ЕГЭ') {
|
|||
|
if ($examination->subjectType->name === 'Обязательные') {
|
|||
|
$egeCompulsory[] = "{$subject} ({$scores})";
|
|||
|
} elseif ($examination->subjectType->name === 'Предметы по выбору') {
|
|||
|
$egeOptional[] = "{$subject} ({$scores})";
|
|||
|
}
|
|||
|
} elseif ($examination->examinationType->name === 'СПО') {
|
|||
|
$spo[] = "{$subject} ({$scores})";
|
|||
|
} elseif ($examination->examinationType->name === 'магитсратура') {
|
|||
|
$magistracy[] = "{$subject} ({$scores})";
|
|||
|
}
|
|||
|
}
|
|||
|
$direction->egeCompulsory = $egeCompulsory;
|
|||
|
$direction->egeOptional = $egeOptional;
|
|||
|
$direction->spo = $spo;
|
|||
|
$direction->magistracy = $magistracy;
|
|||
|
return $direction;
|
|||
|
});
|
|||
|
}
|
|||
|
}
|