From 86597ad075e2fff3c57cea75531c095e04cff24f Mon Sep 17 00:00:00 2001 From: aslan Date: Mon, 4 Mar 2024 08:56:42 +0300 Subject: [PATCH] refactoring Direction edit, add firstOrNew in add entrance-examination --- .../admin/Catalog/DirectionController.php | 33 +++- .../admin/Catalog/UpdateDirectionRequest.php | 32 ++-- .../admin/catalog/direction/edit.blade.php | 156 +++++++++--------- .../catalog/direction/edit_script.blade.php | 89 ++++++++++ 4 files changed, 220 insertions(+), 90 deletions(-) create mode 100644 resources/views/admin/catalog/direction/edit_script.blade.php diff --git a/app/Http/Controllers/admin/Catalog/DirectionController.php b/app/Http/Controllers/admin/Catalog/DirectionController.php index f31cfdb..522722b 100644 --- a/app/Http/Controllers/admin/Catalog/DirectionController.php +++ b/app/Http/Controllers/admin/Catalog/DirectionController.php @@ -110,6 +110,7 @@ class DirectionController extends Controller $magistracy = $direction ->entranceExaminations ->where('examination_type_id', '=', '3') + ->sortBy('position') ->pluck('scores', 'subject_id'); return view( @@ -152,7 +153,6 @@ class DirectionController extends Controller public function update(UpdateDirectionRequest $request, Direction $direction): RedirectResponse { $validated = $request->validated(); - $direction->name = $validated['name']; $direction->full_name = "{$validated['code']} {$validated['name']}"; $direction->description = $validated['description']; @@ -162,8 +162,39 @@ class DirectionController extends Controller $direction->education_level_id = $validated['education_level_id']; $direction->education_form_id = $validated['education_form_id']; $direction->department_id = $validated['department_id']; + $direction->budget_places = $validated['budget_places']; + $direction->quota = $validated['quota']; + $direction->paid_places = $validated['paid_places']; + $direction->cost_paid_place = $validated['cost_paid_place']; + $direction->period = $validated['period']; $direction->save(); + if (array_key_exists('entrance-examination', $validated)) { + foreach ($validated['entrance-examination'] as $id => $data) { + $entranceExamination = EntranceExamination::firstOrNew(['id' => $id]); + $entranceExamination->direction_id = $direction->id; + $entranceExamination->subject_id = $data['subject_id']; + $entranceExamination->scores = $data['scores']; + $entranceExamination->position = $data['position']; + $entranceExamination->subject_type_id = $data['subject_type_id']; + $entranceExamination->examination_type_id = $data['examination_type_id']; + $entranceExamination->save(); + } + } + +// dd($validated); + if (array_key_exists('delete', $validated)) { + foreach ($validated['delete'] as $id => $value) { + $entranceExamination = EntranceExamination::firstOrNew(['id' => $id]); + $entranceExamination->delete(); + } + } + + + if (array_key_exists('direction_profiles', $validated)) { + $direction->directionProfiles()->sync($validated['direction_profiles']); + } + return redirect()->route('directions.index'); } diff --git a/app/Http/Requests/admin/Catalog/UpdateDirectionRequest.php b/app/Http/Requests/admin/Catalog/UpdateDirectionRequest.php index ad6d87f..bb1895c 100644 --- a/app/Http/Requests/admin/Catalog/UpdateDirectionRequest.php +++ b/app/Http/Requests/admin/Catalog/UpdateDirectionRequest.php @@ -15,24 +15,26 @@ class UpdateDirectionRequest extends FormRequest public function rules(): array { return [ - 'position' => 'required||numeric|int|max:255', - 'description' => 'string', - 'department_id' => 'int|required|numeric|max:1000', - 'slug' => [ - 'required', - 'string', - 'max:255', - "unique:directions,slug,{$this->direction->id}", - ], + 'position' => 'required|int|numeric|max:255', 'name' => 'required|string|max:255', + 'description' => 'string', + 'slug' => "required|string|max:255|unique:directions,slug,{$this->direction->id}", + 'code' => "required|string|max:255|unique:directions,code,{$this->direction->id}", 'education_level_id' => 'required|int|numeric|max:1000', 'education_form_id' => 'required|int|numeric|max:1000', - 'code' => [ - 'required', - 'string', - 'max:255', - "unique:directions,code,{$this->direction->id}", - ], + 'department_id' => 'required|numeric|int|max:1000', + 'entrance-examination.*.examination_type_id' => 'required|numeric|int|max:1000', + 'entrance-examination.*.subject_id' => 'required|numeric|int|max:1000', + 'entrance-examination.*.subject_type_id' => 'required|numeric|int|max:1000', + 'entrance-examination.*.scores' => 'required|numeric|int|max:1000', + 'entrance-examination.*.position' => 'required|numeric|int|max:1000', + 'budget_places' => 'required|int|numeric|max:255', + 'paid_places' => 'required|int|numeric|max:255', + 'quota' => 'required|int|numeric|max:255', + 'cost_paid_place' => 'required|int|numeric|max:255', + 'period' => 'required|string|max:255', + 'direction_profiles' => 'nullable|array', + 'delete.*' => 'nullable|array' ]; } } diff --git a/resources/views/admin/catalog/direction/edit.blade.php b/resources/views/admin/catalog/direction/edit.blade.php index c81476e..2e086c7 100644 --- a/resources/views/admin/catalog/direction/edit.blade.php +++ b/resources/views/admin/catalog/direction/edit.blade.php @@ -2,7 +2,7 @@ @section('content') @auth()

Создать Направление

- {{ Form::open(['url' => route('directions.store'), 'method' => 'POST', 'class' => '']) }} + {{ Form::open(['url' => route('directions.update', $direction), 'method' => 'PATCH', 'class' => 'ffff']) }}
@@ -110,7 +110,6 @@
-
@@ -197,91 +196,100 @@
-

Добавить вступительные испытания

+
+

Добавить вступительные испытания

+ +
+
-
-
-
- {{ Form::label('entrance-examination[0][examination_type_id]', 'Тип экзамена') }} + @foreach($direction->entranceExaminations as $entranceExamination) +
+
+
+ {{ Form::label("entrance-examination[{$entranceExamination->id}][examination_type_id]", 'Тип экзамена') }} +
+
+ {{ Form::select("entrance-examination[{$entranceExamination->id}][examination_type_id]", $examination_types, $entranceExamination->examinationType->id, ['class' => 'form-select']) }} +
+
+ @if ($errors->any()) + {{ $errors->first("entrance-examination[{$entranceExamination->id}][examination_type_id]") }} + @endif +
-
- {{ Form::select('entrance-examination[0][examination_type_id]', $examination_types, null, ['class' => 'form-select']) }} +
+
+ {{ Form::label("entrance-examination[{$entranceExamination->id}][subject_id]", 'Предмет') }} +
+
+ {{ Form::select("entrance-examination[{$entranceExamination->id}][subject_id]", $subjects, $entranceExamination->subject->id, ['class' => 'form-select']) }} +
+
+ @if ($errors->any()) + {{ $errors->first("entrance-examination[{$entranceExamination->id}][subject_id]") }} + @endif +
-
- @if ($errors->any()) - {{ $errors->first('entrance-examination[0][examination_type_id]') }} - @endif +
+
+ {{ Form::label("entrance-examination[{$entranceExamination->id}][subject_type_id]", 'Тип предмета') }} +
+
+ {{ Form::select("entrance-examination[{$entranceExamination->id}][subject_type_id]", $subjectTypes, $entranceExamination->subjectType->id, ['class' => 'form-select']) }} +
+
+ @if ($errors->any()) + {{ $errors->first("entrance-examination[{$entranceExamination->id}][subject_type_id]") }} + @endif +
+
+
+
+ {{ Form::label("entrance-examination[{$entranceExamination->id}][scores]", 'Кол-во баллов') }} +
+
+ {{ Form::text("entrance-examination[{$entranceExamination->id}][scores]", $entranceExamination->scores, ['class' => 'form-control']) }} +
+
+ @if ($errors->any()) + {{ $errors->first("entrance-examination[{$entranceExamination->id}][scores]") }} + @endif +
+
+
+
+ {{ Form::label("entrance-examination[{$entranceExamination->id}][position]", 'Позиция') }} +
+
+ {{ Form::text("entrance-examination[{$entranceExamination->id}][position]", $entranceExamination->position, ['class' => 'form-control']) }} +
+
+ @if ($errors->any()) + {{ $errors->first("entrance-examination[{$entranceExamination->id}][position]") }} + @endif +
+
+
+
+ {{ Form::label('btn', 'Действия') }} +
+
-
-
- {{ Form::label('entrance-examination[0][subject_id]', 'Предмет') }} -
-
- {{ Form::select('entrance-examination[0][subject_id]', $subjects, null, ['class' => 'form-select']) }} -
-
- @if ($errors->any()) - {{ $errors->first('entrance-examination[0][subject_id]') }} - @endif -
-
-
-
- {{ Form::label('entrance-examination[0][subject_type_id]', 'Тип предмета') }} -
-
- {{ Form::select('entrance-examination[0][subject_type_id]', $subjectTypes, null, ['class' => 'form-select']) }} -
-
- @if ($errors->any()) - {{ $errors->first('entrance-examination[0][subject_type_id]') }} - @endif -
-
-
-
- {{ Form::label('entrance-examination[0][scores]', 'Кол-во баллов') }} -
-
- {{ Form::text('entrance-examination[0][scores]', '', ['class' => 'form-control']) }} -
-
- @if ($errors->any()) - {{ $errors->first('entrance-examination[0][scores]') }} - @endif -
-
-
-
- {{ Form::label('entrance-examination[0][position]', 'Позиция') }} -
-
- {{ Form::text('entrance-examination[0][position]', '', ['class' => 'form-control']) }} -
-
- @if ($errors->any()) - {{ $errors->first('entrance-examination[0][position]') }} - @endif -
-
-
-
- {{ Form::label('btn', 'Действия') }} -
- -
-
-
+ @endforeach +
{{ Form::submit('Изменить Направление', ['class' => 'btn btn-primary']) }}
{{ Form::close() }}
- @include('admin.catalog.direction.script') + @include('admin.catalog.direction.edit_script') @endauth @endsection diff --git a/resources/views/admin/catalog/direction/edit_script.blade.php b/resources/views/admin/catalog/direction/edit_script.blade.php new file mode 100644 index 0000000..cbc3053 --- /dev/null +++ b/resources/views/admin/catalog/direction/edit_script.blade.php @@ -0,0 +1,89 @@ +