From 92efb4498d168270cccb643bd49cb5d908c7c1a1 Mon Sep 17 00:00:00 2001 From: "m.zargarov" Date: Mon, 27 May 2024 16:57:28 +0400 Subject: [PATCH] Fixed --- app/Enums/ScoreEnum.php | 1 + app/Http/Controllers/ScoreController.php | 8 ++++++++ app/Models/Lesson.php | 5 ----- app/Services/LessonService.php | 8 +++++++- app/Services/ScoreService.php | 20 ++++++++++++------- app/Services/ServiceInterface.php | 4 ++-- ..._13_102702_create_lesson_student_table.php | 5 ++--- resources/views/scores/show.blade.php | 5 ++--- 8 files changed, 35 insertions(+), 21 deletions(-) diff --git a/app/Enums/ScoreEnum.php b/app/Enums/ScoreEnum.php index 8a4578b..fd17bbe 100644 --- a/app/Enums/ScoreEnum.php +++ b/app/Enums/ScoreEnum.php @@ -4,6 +4,7 @@ namespace App\Enums; enum ScoreEnum: string { + case WithoutScore = 'Без оценки'; case One = '1'; case Two = '2'; case Three = '3'; diff --git a/app/Http/Controllers/ScoreController.php b/app/Http/Controllers/ScoreController.php index a60f76c..838ab9b 100644 --- a/app/Http/Controllers/ScoreController.php +++ b/app/Http/Controllers/ScoreController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Enums\ScoreEnum; use App\Models\Lesson; use App\Services\ServiceInterface; +use Illuminate\Http\Request; class ScoreController extends Controller { @@ -22,4 +23,11 @@ class ScoreController extends Controller 'scores' => ScoreEnum::cases(), ]); } + + public function update(Request $request, Lesson $lesson) + { + $this->service->update($lesson, $request->toArray()); + + return redirect()->route('grades.lessons.show', [$lesson->grade, $lesson]); + } } diff --git a/app/Models/Lesson.php b/app/Models/Lesson.php index a52aad6..060f07d 100644 --- a/app/Models/Lesson.php +++ b/app/Models/Lesson.php @@ -23,11 +23,6 @@ class Lesson extends Model 'subject_id', ]; - public function scores(): HasMany - { - return $this->hasMany(Score::class); - } - public function grade(): BelongsTo { return $this->belongsTo(Grade::class); diff --git a/app/Services/LessonService.php b/app/Services/LessonService.php index b32a63d..dc59737 100644 --- a/app/Services/LessonService.php +++ b/app/Services/LessonService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Enums\ScoreEnum; use App\Models\Grade; use App\Models\Lesson; use Illuminate\Database\Eloquent\Collection; @@ -22,7 +23,12 @@ class LessonService implements ServiceInterface public function create(array $data): Lesson { - return Lesson::create($data); + $lesson = Lesson::create($data); + $lesson + ->students() + ->syncWithPivotValues($lesson->grade->students->pluck('id')->all(), ['score' => ScoreEnum::WithoutScore]); + + return $lesson; } public function update(Model $model, array $data): Lesson diff --git a/app/Services/ScoreService.php b/app/Services/ScoreService.php index f0119f3..03d0a90 100644 --- a/app/Services/ScoreService.php +++ b/app/Services/ScoreService.php @@ -10,21 +10,27 @@ class ScoreService implements ServiceInterface public function getAll(?Lesson $lesson = null) { - return $lesson->grade->students; + return $lesson->students; } - public function create(array $data): Model + public function update(Model $model, array $data) { + $model->students->each(function ($item, $key) use ($data, $model) { + if ($data['score' . $item->id]) { + $model->students()->syncWithoutDetaching([$item->id => ['score' => $data['score' . $item->id]]]); + } + }); - } - - public function update(Model $model, array $data): Model - { - // TODO: Implement update() method. + return $model; } public function delete(Model $model) { // TODO: Implement delete() method. } + + public function create(array $data) + { + // TODO: Implement create() method. + } } diff --git a/app/Services/ServiceInterface.php b/app/Services/ServiceInterface.php index ef9a45c..d4b6d33 100644 --- a/app/Services/ServiceInterface.php +++ b/app/Services/ServiceInterface.php @@ -8,9 +8,9 @@ interface ServiceInterface { public function getAll(); - public function create(array $data): Model; + public function create(array $data); - public function update(Model $model, array $data): Model; + public function update(Model $model, array $data); public function delete(Model $model); } diff --git a/database/migrations/2024_05_13_102702_create_lesson_student_table.php b/database/migrations/2024_05_13_102702_create_lesson_student_table.php index 1ba5166..a264a23 100644 --- a/database/migrations/2024_05_13_102702_create_lesson_student_table.php +++ b/database/migrations/2024_05_13_102702_create_lesson_student_table.php @@ -12,10 +12,9 @@ return new class extends Migration public function up(): void { Schema::create('lesson_student', function (Blueprint $table) { - $table->id(); $table->foreignId('lesson_id')->constrained('lessons')->onDelete('cascade'); - $table->foreignId('student_id')->constrained('lessons')->onDelete('cascade'); - $table->unsignedInteger('score'); + $table->foreignId('student_id')->constrained('students')->onDelete('cascade'); + $table->string('score'); $table->timestamps(); }); } diff --git a/resources/views/scores/show.blade.php b/resources/views/scores/show.blade.php index c6f8afa..dad84cb 100644 --- a/resources/views/scores/show.blade.php +++ b/resources/views/scores/show.blade.php @@ -27,10 +27,9 @@
- @foreach($scores as $score) - @endforeach