From 85d7aacb0222d3a3c57a8cb27637f961c7b674ac Mon Sep 17 00:00:00 2001 From: "m.zargarov" Date: Wed, 8 May 2024 12:59:29 +0400 Subject: [PATCH] added controller and service --- app/Http/Controllers/LessonController.php | 88 +++++++++++++++++++++++ app/Http/Requests/LessonPostRequest.php | 35 +++++++++ app/Models/Lesson.php | 3 + app/Providers/ModelServiceProvider.php | 8 +++ app/Services/LessonService.php | 33 +++++++++ 5 files changed, 167 insertions(+) create mode 100644 app/Http/Controllers/LessonController.php create mode 100644 app/Http/Requests/LessonPostRequest.php create mode 100644 app/Services/LessonService.php diff --git a/app/Http/Controllers/LessonController.php b/app/Http/Controllers/LessonController.php new file mode 100644 index 0000000..665d07d --- /dev/null +++ b/app/Http/Controllers/LessonController.php @@ -0,0 +1,88 @@ + $this->service->getAll(), + ]); + } + + /** + * Show the form for creating a new resource. + */ + public function create(): View + { + return view('lessons.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(LessonPostRequest $request): RedirectResponse + { + return redirect()->route( + 'lessons.show', + $this->service->create($request->validated()) + ); + } + + /** + * Display the specified resource. + */ + public function show(Lesson $lesson): View + { + return view('lessons.show', [ + 'lesson' => $lesson, + ]); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Lesson $lesson): View + { + return view('lessons.edit', [ + 'lesson' => $lesson, + ]); + } + + /** + * Update the specified resource in storage. + */ + public function update(LessonPostRequest $request, Lesson $lesson): RedirectResponse + { + return redirect()->route( + 'lessons.show', + $this->service->update($lesson, $request->validated()) + ); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Lesson $lesson): RedirectResponse + { + $this->service->delete($lesson); + + return redirect()->route('lessons.index'); + } +} diff --git a/app/Http/Requests/LessonPostRequest.php b/app/Http/Requests/LessonPostRequest.php new file mode 100644 index 0000000..930a26d --- /dev/null +++ b/app/Http/Requests/LessonPostRequest.php @@ -0,0 +1,35 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'type' => ['required', Rule::in(TypeLesson::cases())], + 'lesson_date' => 'required|date', + 'grade_id' => 'required|exists:grades,id', + 'teacher_id' => 'required|exists:teachers,id', + 'subject_id' => 'required|exists:subjects,id', + ]; + } +} diff --git a/app/Models/Lesson.php b/app/Models/Lesson.php index cfef020..045cc87 100644 --- a/app/Models/Lesson.php +++ b/app/Models/Lesson.php @@ -15,6 +15,9 @@ class Lesson extends Model 'name', 'type', 'lesson_date', + 'grade_id', + 'teacher_id', + 'subject_id', ]; public function scores(): HasMany diff --git a/app/Providers/ModelServiceProvider.php b/app/Providers/ModelServiceProvider.php index e7971b8..aea0c78 100644 --- a/app/Providers/ModelServiceProvider.php +++ b/app/Providers/ModelServiceProvider.php @@ -5,6 +5,7 @@ namespace App\Providers; use App\Http\Controllers\GradeController; use App\Http\Controllers\GradeSubjectController; use App\Http\Controllers\GradeTeacherController; +use App\Http\Controllers\LessonController; use App\Http\Controllers\StudentController; use App\Http\Controllers\SubjectController; use App\Http\Controllers\SubjectTeacherController; @@ -12,6 +13,7 @@ use App\Http\Controllers\TeacherController; use App\Services\GradeService; use App\Services\GradeSubjectService; use App\Services\GradeTeacherService; +use App\Services\LessonService; use App\Services\ServiceInterface; use App\Services\StudentService; use App\Services\SubjectService; @@ -67,6 +69,12 @@ class ModelServiceProvider extends ServiceProvider ->give(function () { return new GradeTeacherService(); }); + + $this->app->when(LessonController::class) + ->needs(ServiceInterface::class) + ->give(function () { + return new LessonService(); + }); } /** diff --git a/app/Services/LessonService.php b/app/Services/LessonService.php new file mode 100644 index 0000000..bc5e8fa --- /dev/null +++ b/app/Services/LessonService.php @@ -0,0 +1,33 @@ +update($data); + + return $model; + } + + public function delete($model): void + { + $model->delete(); + } +}