<?php declare(strict_types=1);

namespace App\Services\CaptchaLog;

use App\Dto\HttpUserData;
use App\Enums\CaptchaLogType;
use App\Models\Captcha;
use App\Models\CaptchaLog;
use Illuminate\Support\Str;

final readonly class CaptchaLogHandler
{
    public function handleStore(Captcha $captcha, CaptchaLogType $captchaLogType, HttpUserData $httpUserData): CaptchaLog
    {
        return $captcha->captchaLogs()->create([
            'type' => $captchaLogType,
            'ip' => $httpUserData->getClientIp(),
            'user_agent' => Str::limit($httpUserData->getUserAgent(), 255, ''),
            'referer' => Str::limit($httpUserData->getReferer(), 10000, ''),
        ]);
    }
}
