<?php

declare(strict_types=1);

namespace App\Http\Requests\Auth;

use App\Http\Requests\Auth\Concerns\HasPasswordRules;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

/**
 * Валидация POST /api/auth/register.
 *
 * По ТЗ §1.5/§4.1: 2 обязательных click-wrap'а — оферта + согласие на ПДн
 * (3-й «маркетинговый» из handoff НЕ требуется — расхождение #2 реестра v1.13).
 */
class RegisterRequest extends FormRequest
{
    use HasPasswordRules;

    /** @return array<string, mixed> */
    public function rules(): array
    {
        return [
            'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users', 'email')],
            'password' => $this->passwordRules(),
            'accept_offer' => ['required', 'accepted'],
            'accept_pdn' => ['required', 'accepted'],
        ];
    }

    /** @return array<string, string> */
    public function messages(): array
    {
        return array_merge($this->passwordMessages(), [
            'email.required' => 'Укажите email.',
            'email.email' => 'Email указан некорректно.',
            'email.unique' => 'Аккаунт с таким email уже существует.',
            'accept_offer.accepted' => 'Необходимо принять оферту.',
            'accept_pdn.accepted' => 'Необходимо согласие на обработку персональных данных.',
        ]);
    }
}
