From 3ed3475e6a9133af6c1400fa429f7f925fa2615d Mon Sep 17 00:00:00 2001 From: "m.zargarov" Date: Sat, 27 Apr 2024 15:10:21 +0400 Subject: [PATCH] Fixes --- app/Http/Requests/StudentPostRequest.php | 2 +- app/Http/Requests/TeacherPostRequest.php | 2 +- app/Models/Student.php | 9 +++++ app/Models/Teacher.php | 8 +++++ app/Services/StudentService.php | 34 +++++++++++++++---- app/Services/TeacherService.php | 32 +++++++++++++---- .../0001_01_01_000000_create_users_table.php | 2 +- resources/views/students/form.blade.php | 8 +++++ resources/views/students/show.blade.php | 8 ++--- resources/views/teachers/form.blade.php | 8 ++--- resources/views/teachers/show.blade.php | 6 ++-- 11 files changed, 93 insertions(+), 26 deletions(-) diff --git a/app/Http/Requests/StudentPostRequest.php b/app/Http/Requests/StudentPostRequest.php index 5704700..71bc504 100644 --- a/app/Http/Requests/StudentPostRequest.php +++ b/app/Http/Requests/StudentPostRequest.php @@ -29,7 +29,7 @@ class StudentPostRequest extends FormRequest 'middle_name' => 'required|max:255', 'birthday' => 'required|date', 'grade_id' => 'required|exists:grades,id', - 'login' => 'required|max:255|lowercase|unique:users,login', + 'email' => 'required|max:255|lowercase|unique:users,email', 'password' => 'required|max:255', ]; } diff --git a/app/Http/Requests/TeacherPostRequest.php b/app/Http/Requests/TeacherPostRequest.php index bfe249e..932d7d5 100644 --- a/app/Http/Requests/TeacherPostRequest.php +++ b/app/Http/Requests/TeacherPostRequest.php @@ -28,7 +28,7 @@ class TeacherPostRequest extends FormRequest 'last_name' => 'required|max:255', 'middle_name' => 'required|max:255', 'birthday' => 'required|date', - 'login' => 'required|max:255|lowercase|unique:users,login', + 'email' => 'required|max:255|lowercase|unique:users,email', 'password' => 'required|max:255', ]; } diff --git a/app/Models/Student.php b/app/Models/Student.php index d810df1..7e97ab8 100644 --- a/app/Models/Student.php +++ b/app/Models/Student.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -16,6 +17,7 @@ class Student extends Model 'last_name', 'middle_name', 'birthday', + 'grade_id', ]; public function grade(): BelongsTo @@ -40,4 +42,11 @@ class Student extends Model $query->orWhereRaw('CONCAT (patronymic, \' \', surname, \' \', name) ilike ?', ["$name%"]); }); } + + public function fio(): Attribute + { + return Attribute::make( + get: fn () => $this->last_name . " " . $this->name . " " . $this->middle_name, + ); + } } diff --git a/app/Models/Teacher.php b/app/Models/Teacher.php index 9b2ee1c..c5cbf24 100644 --- a/app/Models/Teacher.php +++ b/app/Models/Teacher.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -45,4 +46,11 @@ class Teacher extends Model $query->orWhereRaw('CONCAT (patronymic, \' \', surname, \' \', name) ilike ?', ["$name%"]); }); } + + public function fio(): Attribute + { + return Attribute::make( + get: fn () => $this->last_name . " " . $this->name . " " . $this->middle_name, + ); + } } diff --git a/app/Services/StudentService.php b/app/Services/StudentService.php index aa58f01..ea92863 100644 --- a/app/Services/StudentService.php +++ b/app/Services/StudentService.php @@ -3,6 +3,7 @@ namespace App\Services; use App\Models\Student; +use App\Models\Teacher; use App\Models\User; use Illuminate\Pagination\LengthAwarePaginator; @@ -13,24 +14,45 @@ class StudentService implements ServiceInterface return Student::filter()->paginate(10)->withQueryString(); } - public function create(array $data): User + public function create(array $data): Student { - $user = User::create($data['credentials']); - $student = Student::create($data['user_data']); + $user = User::create([ + 'email' => $data['email'], + 'password' => $data['password'], + ]); + $student = Student::create([ + 'name' => $data['name'], + 'last_name' => $data['last_name'], + 'middle_name' => $data['middle_name'], + 'birthday' => $data['birthday'], + 'grade_id' => $data['grade_id'], + ]); $student->user()->save($user); return $student; } - public function update($model, array $data): User + public function update($model, array $data): Student { - $model->update($data); + $model->user()->update([ + 'email' => $data['email'], + 'password' => $data['password'], + ]); + + $model->update([ + 'name' => $data['name'], + 'last_name' => $data['last_name'], + 'middle_name' => $data['middle_name'], + 'birthday' => $data['birthday'], + 'grade_id' => $data['grade_id'], + ]); return $model; } public function delete($model): void { - $model->destroy(); + $model->user()->delete(); + $model->delete(); } } diff --git a/app/Services/TeacherService.php b/app/Services/TeacherService.php index 2d1eabb..a04609e 100644 --- a/app/Services/TeacherService.php +++ b/app/Services/TeacherService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Models\Student; use App\Models\Teacher; use App\Models\User; use Illuminate\Pagination\LengthAwarePaginator; @@ -13,24 +14,43 @@ class TeacherService implements ServiceInterface return Teacher::filter()->paginate(10)->withQueryString(); } - public function create(array $data): User + public function create(array $data): Teacher { - $user = User::create($data['credentials']); - $teacher = Teacher::create($data['user_data']); + $user = User::create([ + 'email' => $data['email'], + 'password' => $data['password'], + ]); + $teacher = Teacher::create([ + 'name' => $data['name'], + 'last_name' => $data['last_name'], + 'middle_name' => $data['middle_name'], + 'birthday' => $data['birthday'], + ]); $teacher->user()->save($user); return $teacher; } - public function update($model, array $data): User + public function update($model, array $data): Teacher { - $model->update($data); + $model->user()->update([ + 'email' => $data['email'], + 'password' => $data['password'], + ]); + + $model->update([ + 'name' => $data['name'], + 'last_name' => $data['last_name'], + 'middle_name' => $data['middle_name'], + 'birthday' => $data['birthday'], + ]); return $model; } public function delete($model): void { - $model->destroy(); + $model->user()->delete(); + $model->delete(); } } diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index c965063..fae1761 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -16,7 +16,7 @@ return new class extends Migration $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); - $table->morphs('userable'); + $table->nullableMorphs('userable'); $table->rememberToken(); $table->timestamps(); }); diff --git a/resources/views/students/form.blade.php b/resources/views/students/form.blade.php index 83a6602..82f694c 100644 --- a/resources/views/students/form.blade.php +++ b/resources/views/students/form.blade.php @@ -32,6 +32,14 @@ @endforeach +
+ + +
+
+ + +
diff --git a/resources/views/students/show.blade.php b/resources/views/students/show.blade.php index bca92ed..7426bd4 100644 --- a/resources/views/students/show.blade.php +++ b/resources/views/students/show.blade.php @@ -7,17 +7,17 @@
{{ ('Ученик') }}
-
ФИО: {{ $user->last_name }} {{ $user->name }} {{ $user->middle_name }}
+
ФИО: {{ $student->fio }}
-
Класс: {{ $user->class->name }}
+
Класс: {{ $student->grade->name }}
-
Дата рождения: {{ $user->birthday }}
+
Дата рождения: {{ $student->birthday }}
diff --git a/resources/views/teachers/form.blade.php b/resources/views/teachers/form.blade.php index f30889b..8f27def 100644 --- a/resources/views/teachers/form.blade.php +++ b/resources/views/teachers/form.blade.php @@ -22,12 +22,12 @@
- - + +
- - + +
diff --git a/resources/views/teachers/show.blade.php b/resources/views/teachers/show.blade.php index 4015e7c..d3d7b9d 100644 --- a/resources/views/teachers/show.blade.php +++ b/resources/views/teachers/show.blade.php @@ -7,14 +7,14 @@
{{ ('Учитель') }}
-
ФИО: {{ $user->last_name }} {{ $user->name }} {{ $user->middle_name }}
+
ФИО: {{ $teacher->fio }}
-
Дата рождения: {{ $user->birthday }}
+
Дата рождения: {{ $teacher->birthday }}