<?php

namespace App\Domains\Integration\Requests;

use App\Domains\Integration\Models\Integration;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\ValidationException;

class StoreClientIntegrationRequest extends FormRequest
{
    protected ?Integration $integrationModel = null;

    public function authorize(): bool
    {
        return true;
    }

    protected function prepareForValidation(): void
    {
        $integrationCode = $this->route('integration_code');
        $this->integrationModel = Integration::query()
            ->where('integration_code', $integrationCode)
            ->first();

        if (! $this->integrationModel) {
            throw ValidationException::withMessages([
                'integration_code' => __('api.integration.not_configured'),
            ]);
        }
    }

    public function rules(): array
    {
        $rules = [];

        foreach ($this->integrationModel?->integration_data_schema ?? [] as $field => $rule) {
            $rules['integration_data.'.$field] = $rule;
        }

        return $rules;
    }
}
