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 @@ +
+
+
+
+
+ @csrf + @method($method) +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + {{-- заглушка --}} +
+ +
+
+
+
+
+
diff --git a/resources/views/grade-lesson/grades-list.blade.php b/resources/views/grade-lesson/grades-list.blade.php new file mode 100644 index 0000000..3c59b88 --- /dev/null +++ b/resources/views/grade-lesson/grades-list.blade.php @@ -0,0 +1,22 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
{{__('Классы')}}
+
+ @if (count($grades)) +
+ @foreach ($grades as $grade) + {{ $grade->name }} + @endforeach +
+ @else +

Классы отсутствуют

+ @endif +
+
+
+
+@endsection diff --git a/resources/views/grade-lesson/index.blade.php b/resources/views/grade-lesson/index.blade.php new file mode 100644 index 0000000..34617be --- /dev/null +++ b/resources/views/grade-lesson/index.blade.php @@ -0,0 +1,35 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
{{__('Создание занятия')}}
+ +
+ @if(count($lessons)) + @foreach($lessons as $lesson) + +
+
{{$lesson->subject->name}}
+
{{$lesson->type}}
+
+ {{ $lesson->name }} +
+ +
+
+ @endforeach + @endif +
+
+@endsection + diff --git a/resources/views/grade-lesson/show.blade.php b/resources/views/grade-lesson/show.blade.php new file mode 100644 index 0000000..55a6306 --- /dev/null +++ b/resources/views/grade-lesson/show.blade.php @@ -0,0 +1,30 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
{{ $lesson->type }}
+
+
+
Тема: {{ $lesson->name }}
+
+
+
Предмет: {{ $lesson->subject->name }}
+
+
+
Дата: {{ $lesson->lesson_date }}
+
+
+
Описание: {{ $lesson->description }}
+
+
+ +
+
+
+@endsection + + diff --git a/resources/views/includes/footer.blade.php b/resources/views/includes/footer.blade.php index 780e7f8..016be12 100644 --- a/resources/views/includes/footer.blade.php +++ b/resources/views/includes/footer.blade.php @@ -3,6 +3,7 @@ diff --git a/resources/views/includes/header.blade.php b/resources/views/includes/header.blade.php index 9e59fab..31e0472 100644 --- a/resources/views/includes/header.blade.php +++ b/resources/views/includes/header.blade.php @@ -2,7 +2,8 @@
diff --git a/routes/web.php b/routes/web.php index a8c97ba..fd37d1c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -19,9 +19,10 @@ Route::resources([ 'subjects' => SubjectController::class, 'students' => StudentController::class, 'teachers' => TeacherController::class, - 'lessons' => LessonController::class, + 'grades.lessons' => LessonController::class, ]); 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::get('lessons/grade-list', [LessonController::class, 'gradeList'])->name('grades.lessons.grades-list');