<?php declare(strict_types=1); namespace App\Services\Captcha; use App\Dto\HttpUserData; use App\Enums\CaptchaLogType; use App\Models\Captcha; use App\Models\CaptchaToken; use App\Services\CaptchaLog\CaptchaLogHandler; use App\Services\GenerateTokenCommand\GenerateTokenUuidCommand; final readonly class CaptchaHandler { public function __construct( private GenerateTokenUuidCommand $uuidCommand, private CaptchaLogHandler $captchaLogHandler ) { } public function handleStore(CaptchaToken $captchaToken, HttpUserData $httpUserData): Captcha { $captcha = $captchaToken->captchas()->create([ 'uuid' => $this->uuidCommand->unique($captchaToken->captchas()->getQuery(), 'uuid') ]); $this->captchaLogHandler->handleStore($captcha->id, CaptchaLogType::Created, $httpUserData); return $captcha; } }