Bläddra i källkod

delete responsible

Alexander Musikhin 8 månader sedan
förälder
incheckning
f50b6620ef

+ 22 - 4
app/Http/Controllers/ResponsibleController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Http\Requests\StoreResponsibleRequest;
 use App\Models\Dictionary\Area;
 use App\Models\Responsible;
+use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 
 class ResponsibleController extends Controller
@@ -37,8 +38,6 @@ class ResponsibleController extends Controller
     public function index(Request $request)
     {
         $model = new Responsible;
-//        $this->data['ranges'] = [];
-//        $this->createFilters($model, 'area-name');
         $this->createDateFilters($model, 'created_at');
 
         $q = $model::query();
@@ -52,6 +51,10 @@ class ResponsibleController extends Controller
         return view('responsibles.index', $this->data);
     }
 
+    /**
+     * @param StoreResponsibleRequest $request
+     * @return RedirectResponse
+     */
     public function store(StoreResponsibleRequest $request)
     {
         $responsible = Responsible::query()->create($request->validated());
@@ -60,11 +63,21 @@ class ResponsibleController extends Controller
         return redirect()->route('responsible.index');
     }
 
+    /**
+     * @param Responsible $responsible
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Foundation\Application|\Illuminate\View\View
+     */
     public function show(Responsible $responsible)
     {
         $this->data['responsible'] = $responsible;
         return view('responsibles.edit', $this->data);
     }
+
+    /**
+     * @param StoreResponsibleRequest $request
+     * @param Responsible $responsible
+     * @return RedirectResponse
+     */
     public function update(StoreResponsibleRequest $request, Responsible $responsible)
     {
         $responsible->update($request->validated());
@@ -73,8 +86,13 @@ class ResponsibleController extends Controller
         return redirect()->route('responsible.index');
     }
 
-    public function destroy()
+    /**
+     * @param Responsible $responsible
+     * @return RedirectResponse
+     */
+    public function destroy(Responsible $responsible)
     {
-
+        $responsible->delete();
+        return redirect()->route('responsible.index');
     }
 }

+ 1 - 1
database/migrations/2025_04_03_192940_create_responsibles_table.php

@@ -22,7 +22,7 @@ return new class extends Migration
                 ->nullable()
                 ->after('district_id')
                 ->constrained('responsibles')
-                ->restrictOnDelete();
+                ->nullOnDelete();
         });
     }
 

+ 15 - 3
resources/views/partials/submit.blade.php

@@ -1,15 +1,27 @@
 <div class="row">
     <div class="@if(!($right ?? null)) offset-md-{{ $offset ?? 4 }} col-md-8 @endif">
-        <button type="submit" class="btn btn-primary sbmt text-white">{{ $name ?? 'Сохранить' }}</button>
+        <button type="submit" class="btn btn-primary text-white">{{ $name ?? 'Сохранить' }}</button>
+        @if(isset($delete))
+            <a href="#" class="btn btn-danger delete">{{ $delete['title'] }}</a>
+        @endif
     </div>
 </div>
 
 @push('scripts')
     <script type="module">
-        $('.sbmt').on('click', function (){
+
+        $('a.delete').on('click', function (){
+            if(confirm('Удалить запись?')) {
+                $('#{{ $delete['form_id'] ?? 'destroy_form'}}').submit();
+            }
+        });
+
+        $('.btn').on('click', function (){
             $(this).addClass('d-none');
+
+
             setTimeout(function () {
-                $('.sbmt').removeClass('d-none');
+                    $('.btn').removeClass('d-none');
                 },
                 2000);
         });

+ 8 - 1
resources/views/responsibles/edit.blade.php

@@ -13,7 +13,14 @@
                 @include('partials.input', ['name' => 'name', 'title' => 'ФИО', 'required' => true, 'value' => $responsible->name])
                 @include('partials.input', ['name' => 'phone', 'title' => 'Телефон', 'required' => true, 'value' => $responsible->phone])
 
-                @include('partials.submit', ['name' => 'Сохранить'])
+                @include('partials.submit', ['name' => 'Сохранить', 'delete' => ['form_id' => 'destroy', 'title' => 'Удалить']])
             </div>
         </form>
+    </div>
+    <div class="visually-hidden d-none">
+        <form action="{{ route('responsible.destroy', $responsible) }}" id="destroy" method="post">
+            @csrf
+            @method('DELETE')
+        </form>
+    </div>
 @endsection