diff --git a/app/Http/Controllers/LessonController.php b/app/Http/Controllers/LessonController.php index e0ca795..1c829c5 100644 --- a/app/Http/Controllers/LessonController.php +++ b/app/Http/Controllers/LessonController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\Enums\TypeLesson; use App\Http\Requests\LessonPostRequest; +use App\Models\Grade; use App\Models\Lesson; use App\Services\ServiceInterface; use Illuminate\Http\RedirectResponse; @@ -17,54 +18,67 @@ class LessonController extends Controller ){ } + public function gradeList(): View + { + return view('grade-lesson.grades-list', [ + 'grades' => $this->service->getGrades(), + ]); + } + /** * Display a listing of the resource. */ - public function index(): View + public function index(Grade $grade): View { - return view('lessons.index', [ - 'lessons' => $this->service->getAll(), + return view('grade-lesson.index', [ + 'lessons' => $this->service->getAll($grade), + 'grade' => $grade, ]); } /** * Show the form for creating a new resource. */ - public function create(): View + public function create(Grade $grade): View { - return view('lessons.create', [ + return view('grade-lesson.create', [ 'types' => TypeLesson::cases(), + 'grade' => $grade, ]); } /** * Store a newly created resource in storage. */ - public function store(LessonPostRequest $request): RedirectResponse + public function store(LessonPostRequest $request, Grade $grade): RedirectResponse { return redirect()->route( - 'lessons.show', - $this->service->create($request->validated()) + 'grades.lessons.show', [ + $grade, + $this->service->create($request->validated()) + ] ); } /** * Display the specified resource. */ - public function show(Lesson $lesson): View + public function show(Grade $grade, Lesson $lesson): View { - return view('lessons.show', [ + return view('grade-lesson.show', [ 'lesson' => $lesson, + 'grade' => $grade, ]); } /** * Show the form for editing the specified resource. */ - public function edit(Lesson $lesson): View + public function edit(Grade $grade, Lesson $lesson): View { - return view('lessons.edit', [ + return view('grade-lesson.edit', [ 'lesson' => $lesson, + 'grade' => $grade, 'types' => TypeLesson::cases(), ]); } @@ -72,21 +86,23 @@ class LessonController extends Controller /** * Update the specified resource in storage. */ - public function update(LessonPostRequest $request, Lesson $lesson): RedirectResponse + public function update(LessonPostRequest $request, Grade $grade, Lesson $lesson): RedirectResponse { return redirect()->route( - 'lessons.show', - $this->service->update($lesson, $request->validated()) + 'grades.lessons.show',[ + $grade, + $this->service->update($lesson, $request->validated()) + ] ); } /** * Remove the specified resource from storage. */ - public function destroy(Lesson $lesson): RedirectResponse + public function destroy(Grade $grade, Lesson $lesson): RedirectResponse { $this->service->delete($lesson); - return redirect()->route('lessons.index'); + return redirect()->route('grades.lessons.index', $grade); } } diff --git a/app/Http/Requests/LessonPostRequest.php b/app/Http/Requests/LessonPostRequest.php index 930a26d..174fe96 100644 --- a/app/Http/Requests/LessonPostRequest.php +++ b/app/Http/Requests/LessonPostRequest.php @@ -27,6 +27,7 @@ class LessonPostRequest extends FormRequest 'name' => 'required|string|max:255', 'type' => ['required', Rule::in(TypeLesson::cases())], 'lesson_date' => 'required|date', + 'description' => 'nullable|string|max:250', 'grade_id' => 'required|exists:grades,id', 'teacher_id' => 'required|exists:teachers,id', 'subject_id' => 'required|exists:subjects,id', diff --git a/app/Services/LessonService.php b/app/Services/LessonService.php index bc5e8fa..1aa7bb4 100644 --- a/app/Services/LessonService.php +++ b/app/Services/LessonService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Models\Grade; use App\Models\Lesson; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; @@ -9,9 +10,14 @@ use Illuminate\Database\Eloquent\Model; class LessonService implements ServiceInterface { - public function getAll(): Collection + public function getAll(?Grade $grade = null): Collection { - return Lesson::all(); + return $grade->lessons; + } + + public function getGrades(): Collection + { + return Grade::all(); } public function create(array $data): Lesson diff --git a/resources/views/grade-lesson/create.blade.php b/resources/views/grade-lesson/create.blade.php new file mode 100644 index 0000000..10d197b --- /dev/null +++ b/resources/views/grade-lesson/create.blade.php @@ -0,0 +1,5 @@ +@extends('layouts.app') + +@section('content') + @include('grade-lesson.form', ['route' => route('grades.lessons.store', $grade), 'method' => 'POST']) +@endsection diff --git a/resources/views/grade-lesson/edit.blade.php b/resources/views/grade-lesson/edit.blade.php new file mode 100644 index 0000000..9866f01 --- /dev/null +++ b/resources/views/grade-lesson/edit.blade.php @@ -0,0 +1,5 @@ +@extends('layouts.app') + +@section('content') + @include('grade-lesson.form', ['route' => route('grades.lessons.update', [$grade, $lesson]), 'method' => 'PUT']) +@endsection diff --git a/resources/views/grade-lesson/form.blade.php b/resources/views/grade-lesson/form.blade.php new file mode 100644 index 0000000..2cb5e79 --- /dev/null +++ b/resources/views/grade-lesson/form.blade.php @@ -0,0 +1,51 @@ +
Классы отсутствуют
+ @endif +