diff --git a/app/Containers/User/Actions/GetPersonDataAction.php b/app/Containers/User/Actions/GetPersonDataAction.php new file mode 100644 index 0000000..03da8ef --- /dev/null +++ b/app/Containers/User/Actions/GetPersonDataAction.php @@ -0,0 +1,22 @@ +findPersonBySlugTask->run($slug); + $seo = $this->getSeoForPersonTask->run($personData); + + return compact('personData', 'seo'); + } +} diff --git a/app/Containers/User/Tasks/FindPersonBySlugTask.php b/app/Containers/User/Tasks/FindPersonBySlugTask.php new file mode 100644 index 0000000..5dff943 --- /dev/null +++ b/app/Containers/User/Tasks/FindPersonBySlugTask.php @@ -0,0 +1,23 @@ +value . $slug, + now()->addHours(24), + fn() => User::with(['userDetail', 'departments_work.faculty', 'departments_teach.faculty', 'divisions', 'faculties']) + ->where('slug', $slug) + ->whereHas('userDetail') + ->firstOrFail() + ); + } +} diff --git a/app/Containers/User/Tasks/GetSeoForPersonTask.php b/app/Containers/User/Tasks/GetSeoForPersonTask.php new file mode 100644 index 0000000..85e132d --- /dev/null +++ b/app/Containers/User/Tasks/GetSeoForPersonTask.php @@ -0,0 +1,23 @@ +value . 'seo_' . $personData->slug, + now()->addHours(24), + fn() => $this->seoPageProvider->getSeoForModel($personData) + ); + } +} diff --git a/app/Containers/User/UI/WEB/Controllers/PersonController.php b/app/Containers/User/UI/WEB/Controllers/PersonController.php index 1d10426..cf3056e 100644 --- a/app/Containers/User/UI/WEB/Controllers/PersonController.php +++ b/app/Containers/User/UI/WEB/Controllers/PersonController.php @@ -2,38 +2,22 @@ namespace App\Containers\User\UI\WEB\Controllers; +use App\Containers\User\Actions\GetPersonDataAction; use App\Containers\User\Models\User; use App\Containers\User\UI\WEB\Transformers\FullInfoPersonResource; -use App\Ship\Contracts\SeoServiceInterface; use App\Ship\Controllers\Controller; -use App\Ship\Enums\CacheKeys; -use Illuminate\Support\Facades\Cache; use Inertia\Inertia; class PersonController extends Controller { - public function __construct(readonly SeoServiceInterface $seoPageProvider){} + public function __construct(private readonly GetPersonDataAction $getPersonDataAction){} public function show(string $slug) { - $personData = Cache::remember( - CacheKeys::USER_PREFIX->value . $slug, - now()->addHours(24), - fn() => User::with(['userDetail', 'departments_work.faculty', 'departments_teach.faculty', 'divisions', 'faculties']) - ->where('slug', $slug) - ->whereHas('userDetail') - ->firstOrFail() - ); - - $seo = Cache::remember( - CacheKeys::USER_PREFIX->value . 'seo_' . $slug, - now()->addHours(24), - fn() => $this->seoPageProvider->getSeoForModel($personData) - ); - - $person = new FullInfoPersonResource($personData); - + $data = $this->getPersonDataAction->run($slug); + $person = new FullInfoPersonResource($data['personData']); + $seo = $data['seo']; return Inertia::render('Client/Persons/Show', compact('person', 'seo')); } diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php deleted file mode 100644 index 34e0fb1..0000000 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ /dev/null @@ -1,51 +0,0 @@ -validate([ - 'name' => 'required|string|max:255', - 'email' => 'required|string|email|max:255|unique:'.User::class, - 'password' => ['required', 'confirmed', Rules\Password::defaults()], - ]); - - $user = User::create([ - 'name' => $request->name, - 'email' => $request->email, - 'password' => Hash::make($request->password), - ]); - - event(new Registered($user)); - - Auth::login($user); - - return redirect('/'); - } -}