From 24b5683090aacf964c5cacc5ae9b227780511a69 Mon Sep 17 00:00:00 2001 From: "m.zargarov" Date: Thu, 20 Jun 2024 12:27:05 +0400 Subject: [PATCH 1/2] Add journal --- .../Controllers/GradeSubjectController.php | 27 +++------ app/Services/JournalService.php | 19 +++++++ .../views/grade-subject/journal.blade.php | 57 +++++++++++++++++++ resources/views/grades/show.blade.php | 2 +- routes/web.php | 4 +- 5 files changed, 89 insertions(+), 20 deletions(-) create mode 100644 app/Services/JournalService.php create mode 100644 resources/views/grade-subject/journal.blade.php diff --git a/app/Http/Controllers/GradeSubjectController.php b/app/Http/Controllers/GradeSubjectController.php index d7ee45d..3ec4ed8 100644 --- a/app/Http/Controllers/GradeSubjectController.php +++ b/app/Http/Controllers/GradeSubjectController.php @@ -5,7 +5,7 @@ namespace App\Http\Controllers; use App\Http\Requests\GradeSubjectPostRequest; use App\Models\Grade; use App\Models\Subject; -use App\Services\ServiceInterface; +use App\Services\JournalService; use Illuminate\Http\RedirectResponse; use Illuminate\View\View; @@ -26,27 +26,18 @@ class GradeSubjectController extends Controller return redirect()->route('grades.show', $grade); } - public function edit(Grade $grade, Subject $subject): View - { - return view('grade-subject.edit', [ - 'grade' => $grade, - 'updateSubject' => $subject, - 'subjects' => Subject::all(), - ]); - } - - public function update(GradeSubjectPostRequest $request, Grade $grade, Subject $subject): RedirectResponse - { - $grade->subjects()->detach($subject); - $grade->subjects()->attach($request->subject_id); - - return redirect()->route('grades.show', $grade); - } - public function destroy(Grade $grade, Subject $subject): RedirectResponse { $grade->subjects()->detach($subject); return redirect()->route('grades.show', $grade); } + + public function journal(Grade $grade, Subject $subject, JournalService $service): View + { + return view('grade-subject.journal', [ + 'lessons' => $grade->lessons()->where('subject_id', $subject->id)->with('students')->get(), + 'students' => $grade->students()->orderBy('last_name')->get(), + ]); + } } diff --git a/app/Services/JournalService.php b/app/Services/JournalService.php new file mode 100644 index 0000000..daa1238 --- /dev/null +++ b/app/Services/JournalService.php @@ -0,0 +1,19 @@ +where('grade_id', $grade->id) + ->where('subject_id', $subject->id) + ->orderBy('lesson_date') + ->get(); + } +} diff --git a/resources/views/grade-subject/journal.blade.php b/resources/views/grade-subject/journal.blade.php new file mode 100644 index 0000000..02f3cb1 --- /dev/null +++ b/resources/views/grade-subject/journal.blade.php @@ -0,0 +1,57 @@ +@extends('layouts.application') + +@section('content') +
+
+ @if (count($students)) +
+
{{__('Журнал')}}
+
+
+ + + + + @foreach ($lessons as $lesson) + + @endforeach + + + + @foreach ($lessons as $lesson) + + @endforeach + + + + @foreach ($students as $student) + + + @foreach ($lessons as $lesson) + + @endforeach + + @endforeach +{{-- --}} +{{-- --}} +{{-- @foreach ($avgScores as $avgScore)--}} +{{-- --}} +{{-- @endforeach--}} +{{-- --}} + +
ФИО{{ $lesson->lesson_date }}
{{ $lesson->type }}
{{ $student->fio }} + {{ $student->lessons->find($lesson->id)->pivot->score ?? "-" }} +
Средняя оценка--}} +{{-- {{ $avgScore ? $avgScore : "" }}--}} +{{--
+
+
+
+{{--
--}} +{{-- @include('journals.list', ['users' => $goods, 'studentName' => 'хорошистов'])--}} +{{-- @include('journals.list', ['users' => $perfects, 'studentName' => 'отличников'])--}} +{{--
--}} + @endif +
+
+@endsection diff --git a/resources/views/grades/show.blade.php b/resources/views/grades/show.blade.php index 80fa23f..dc25c85 100644 --- a/resources/views/grades/show.blade.php +++ b/resources/views/grades/show.blade.php @@ -35,7 +35,7 @@
- Редактировать + Журнал
diff --git a/routes/web.php b/routes/web.php index 95a8b77..aafe04d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -35,11 +35,13 @@ Route::middleware('auth')->group(function () { Route::resource('teachers.subjects', SubjectTeacherController::class)->except('index'); Route::resource('teachers.subjects.grades', GradeTeacherController::class)->except('index', 'show'); - Route::resource('grades.subjects', GradeSubjectController::class)->except('index', 'show'); + Route::resource('grades.subjects', GradeSubjectController::class)->except('index', 'show', 'edit', 'update'); Route::get('lessons/{lesson}/scores', [ScoreController::class, 'show'])->name('lessons.scores.show'); Route::put('lessons/{lesson}/scores', [ScoreController::class, 'update'])->name('lessons.scores.update'); Route::get('export-pdf', [SubjectController::class, 'exportToPDF'])->name('export-pdf'); + + Route::get('grades/{grade}/subjects/{subject}/journal', [GradeSubjectController::class, 'journal'])->name('grades.subjects.journal'); }); require __DIR__.'/auth.php'; From 2255a901be2567d759683772ba2af947e2ea2e0e Mon Sep 17 00:00:00 2001 From: "m.zargarov" Date: Thu, 20 Jun 2024 15:57:12 +0400 Subject: [PATCH 2/2] Fix --- app/Http/Controllers/StudentController.php | 7 +++++++ app/Models/Student.php | 2 +- app/Services/StudentService.php | 12 ++++++++++++ routes/web.php | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/StudentController.php b/app/Http/Controllers/StudentController.php index 5217ca6..80cb66a 100644 --- a/app/Http/Controllers/StudentController.php +++ b/app/Http/Controllers/StudentController.php @@ -91,4 +91,11 @@ class StudentController extends Controller return redirect()->route('students.index'); } + + public function scores(StudentService $service): View + { + return view('students.scores', [ + 'scores' => $service->getScores(), + ]); + } } diff --git a/app/Models/Student.php b/app/Models/Student.php index fdc1552..1c96a5f 100644 --- a/app/Models/Student.php +++ b/app/Models/Student.php @@ -39,7 +39,7 @@ class Student extends Model public function lessons(): BelongsToMany { - return $this->belongsToMany(Lesson::class); + return $this->belongsToMany(Lesson::class)->withPivot('score'); } public function scopeFilter(Builder $query): void diff --git a/app/Services/StudentService.php b/app/Services/StudentService.php index 94643b3..fbfdaac 100644 --- a/app/Services/StudentService.php +++ b/app/Services/StudentService.php @@ -5,7 +5,9 @@ namespace App\Services; use App\Enums\ScoreEnum; use App\Models\Student; use App\Models\User; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Facades\Auth; class StudentService { @@ -53,4 +55,14 @@ class StudentService $model->user()->delete(); $model->delete(); } + + public function getScores(): Collection + { + $student = Auth::user()->userable; + foreach ($student->lessons as $lesson) { + dd($lesson->pivot->score); + } + + return $student->lessons; + } } diff --git a/routes/web.php b/routes/web.php index aafe04d..74da970 100644 --- a/routes/web.php +++ b/routes/web.php @@ -42,6 +42,8 @@ Route::middleware('auth')->group(function () { Route::get('export-pdf', [SubjectController::class, 'exportToPDF'])->name('export-pdf'); Route::get('grades/{grade}/subjects/{subject}/journal', [GradeSubjectController::class, 'journal'])->name('grades.subjects.journal'); + + Route::get('student-scores', [StudentController::class, 'scores'])->name('student-scores'); }); require __DIR__.'/auth.php';