Kaynağa Gözat

add undelte user

Alexander Musikhin 2 ay önce
ebeveyn
işleme
f2ad9abf15

+ 14 - 4
app/Http/Controllers/UserController.php

@@ -22,7 +22,8 @@ class UserController extends Controller
             'name'          => 'ФИО',
             'phone'         => 'Телефон',
             'role'          => 'Роль',
-            'created_at'    => 'Дата создания'
+            'created_at'    => 'Дата создания',
+            'deleted_at'    => 'Дата Удаления',
         ],
         'searchFields' => [
             'name',
@@ -47,7 +48,7 @@ class UserController extends Controller
         $this->acceptFilters($q, $request);
         $this->acceptSearch($q, $request);
         $this->setSortAndOrderBy($model, $request);
-
+        $q->withTrashed();
         $q->orderBy($this->data['sortBy'], $this->data['orderBy']);
         $this->data['users'] = $q->paginate(session('per_page', config('pagination.per_page')))->withQueryString();
 
@@ -89,9 +90,12 @@ class UserController extends Controller
     /**
      * Display the specified resource.
      */
-    public function show(User $user)
+    public function show(int $userId)
     {
-        $this->data['user'] = $user;
+        $this->data['user'] = User::query()
+            ->where('id', $userId)
+            ->withTrashed()
+            ->first();
         return view('users.edit', $this->data);
     }
 
@@ -140,5 +144,11 @@ class UserController extends Controller
         return redirect()->route('login')->with(['success' => 'Профиль удалён!']);
     }
 
+    public function undelete(int $userId)
+    {
+        User::query()->where('id', '=', $userId)->restore();
+        return redirect()->route('user.show', $userId)->with(['success' => 'Пользователь восстановлен!']);
+    }
+
 
 }

+ 23 - 1
resources/views/users/edit.blade.php

@@ -26,9 +26,31 @@
                 @include('partials.select', ['name' => 'role', 'title' => 'Роль', 'options' => getRoles(), 'value' => $user->role ?? \App\Models\Role::MANAGER])
 
                 @include('partials.input', ['name' => 'color', 'title' => 'Цвет', 'value' => $user->color ?? '#FFFFFF', 'type' => 'color'])
+                @if(!is_null($user->deleted_at))
+                    <div class="col-12 text-center">
+                        <div class="text-danger">ПОЛЬЗОВАТЕЛЬ УДАЛЁН!!!</div>
+                        <a href="#" class="btn btn-sm btn-warning undelete">Восстановить</a>
+                    </div>
 
-                @include('partials.submit')
+                @else
+                    @include('partials.submit')
+                @endif
+            </form>
+            <form action="{{ route('user.undelete', $user->id) }}" method="post" class="d-none" id="undelete-user">
+                @csrf
             </form>
         </div>
     </div>
 @endsection
+
+@push('scripts')
+    <script type="module">
+        $('.undelete').on('click', function (){
+            if(confirm('Восстановить пользователя?')) {
+                $('#undelete-user').submit();
+            }
+        });
+
+
+    </script>
+@endpush

+ 1 - 0
routes/web.php

@@ -45,6 +45,7 @@ Route::middleware('auth:web')->group(function () {
             Route::post('', [UserController::class, 'store'])->name('user.store');
             Route::put('{user}', [UserController::class, 'update'])->name('user.update');
             Route::delete('{user}', [UserController::class, 'destroy'])->name('user.destroy');
+            Route::post('undelete/{user}', [UserController::class, 'undelete'])->name('user.undelete');
         });
         Route::prefix('responsibles')->group(function (){
             Route::get('', [ResponsibleController::class, 'index'])->name('responsible.index');