Laravel_App/app/Http/Controllers/UserController.php
2025-01-13 15:52:38 +03:00

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');
}
}