48 lines
1.4 KiB
PHP
48 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\Grade;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class FileService
|
|
{
|
|
public function exportSubjects()
|
|
{
|
|
$listSubjects = collect();
|
|
$student = Auth::user()->userable;
|
|
$subjects = $student->grade->subjects;
|
|
$teachers = $student->grade->teachers;
|
|
|
|
$teachers->each(function ($teacher) use ($subjects, $listSubjects) {
|
|
$teacher->subjects->each(function ($subject) use ($subjects, $listSubjects, $teacher) {
|
|
if ($subjects->contains($subject)) {
|
|
$listSubjects->push(['subject' => $subject->name, 'teacher' => $teacher->fio]);
|
|
}
|
|
});
|
|
});
|
|
|
|
return Pdf::loadView('subjects.pdf', ['subjects' => $listSubjects])->download('Предметы.pdf');
|
|
}
|
|
|
|
public function exportStudents(Grade $grade)
|
|
{
|
|
$excellentStudents = $this->getMinScore($grade, 5);
|
|
$goodStudents = $this->getMinScore($grade, 4);
|
|
|
|
return Pdf::loadView('grades.list-students', [
|
|
'excellentStudents' => $excellentStudents,
|
|
'goodStudents' => $goodStudents,
|
|
])->download('Студенты.pdf');
|
|
}
|
|
|
|
public function getMinScore(Grade $grade, $minScore)
|
|
{
|
|
return $grade->students->filter(function ($student) use ($minScore) {
|
|
return $student->lessons->min('pivot.score') == $minScore;
|
|
});
|
|
}
|
|
|
|
}
|