115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers;
 | |
| 
 | |
| use App\Http\Requests\EditUserRequest;
 | |
| use App\Http\Requests\UserRequest;
 | |
| use App\Models\User;
 | |
| use http\Env\Request;
 | |
| use Illuminate\Contracts\View\Factory;
 | |
| use Illuminate\Contracts\View\View;
 | |
| use Illuminate\Foundation\Application;
 | |
| use Illuminate\Foundation\Http\FormRequest;
 | |
| use Illuminate\Support\Facades\Hash;
 | |
| use Illuminate\Support\Facades\Validator;
 | |
| use Illuminate\Validation\Rule;
 | |
| use itguild\forms\debug\Debug;
 | |
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 | |
| 
 | |
| class UserController extends Controller
 | |
| {
 | |
|     public function actionIndex($page_number = 1): View|Factory|Application
 | |
|     {
 | |
|         return view('user.index', [
 | |
|             'page_number' => $page_number
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param int $id
 | |
|      * @return View|Factory|Application
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function actionView(int $id): View|Factory|Application
 | |
|     {
 | |
|         $user = User::find($id);
 | |
|         if (!$user) {
 | |
| //            throw new NotFoundHttpException();
 | |
|             throw new \Exception('User not found');
 | |
|         }
 | |
|         return view('user.view', [
 | |
|             'user' => User::find($id)
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     public function actionCreate(): View|Factory|Application
 | |
|     {
 | |
|         return view('user.form');
 | |
|     }
 | |
| 
 | |
|     public function actionStore(UserRequest $request): View|Factory|Application
 | |
|     {
 | |
|         $validated = $request->validated();
 | |
|         $user = new User();
 | |
|         $user->username = $validated['username'];
 | |
|         $user->email = $validated['email'];
 | |
|         $user->password_hash = Hash::make($validated['password']);
 | |
|         $user->save();
 | |
| 
 | |
|         return view('user.view', [
 | |
|             'user' => User::find($user->id)
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function actionUpdate(int $id): View|Factory|Application
 | |
|     {
 | |
|         $user = User::find($id);
 | |
|         if (!$user) {
 | |
|             throw new \Exception('User not found');
 | |
|         }
 | |
| 
 | |
|         return view('user.form', [
 | |
|             'model' => $user
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @throws \Exception
 | |
|      */
 | |
|     public function actionEdit(int $id, FormRequest $request): View|Factory|Application
 | |
|     {
 | |
|         $user = User::find($id);
 | |
|         if (!$user) {
 | |
|             throw new \Exception('User not found');
 | |
|         }
 | |
| 
 | |
|         $request = UserRequest::rulesForUpdate($request, $user);
 | |
| 
 | |
|         $validated = $request->validated();
 | |
|         $user->username = $validated['username'];
 | |
|         $user->email = $validated['email'];
 | |
|         if (isset($validated['password'])) {
 | |
|             $user->password_hash = Hash::make($validated['password']);
 | |
|         }
 | |
|         $user->save();
 | |
| 
 | |
|         return view('user.view', [
 | |
|             'user' => $user
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     public function actionDelete(int $id): Application|\Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse
 | |
|     {
 | |
|         $user = User::find($id);
 | |
|         if (!$user) {
 | |
|             throw new \Exception('User not found');
 | |
|         }
 | |
|         $user->delete();
 | |
| 
 | |
|         return redirect('/admin/user');
 | |
|     }
 | |
| }
 |