<?php

namespace App\Http\Requests\Backoffice;

use App\Support\Backoffice\Sanitizer\Traits\SanitizesInput;
use Illuminate\Foundation\Http\FormRequest;

class AccountCreateRequest extends FormRequest
{
    use SanitizesInput;

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name' => 'required|max:100',
            'planId' => 'required|integer|exists:subscription_plans,id',
            'optionId' => 'nullable|integer|exists:subscription_plan_options,id',
            'subscriptionRewardId' => 'nullable|integer|exists:subscription_rewards,id',
            'hasTrial' => 'required|boolean',
            'seats' => 'nullable|required_if:optionId,null|integer|min:1',
            'price' => 'nullable|required_if:optionId,null|decimal:0,2|min:0',
            'createUser' => 'required|boolean',
            'userId' => 'nullable|required_if:createUser,0|exists:users,id',
            'userFirstName' => 'required_if:createUser,1|max:50',
            'userLastName' => 'required_if:createUser,1|max:50',
            'userEmail' => 'nullable|required_if:createUser,1|email|max:255',
        ];
    }

    /**
     * Filters to be applied to the input.
     *
     * @return array
     */
    public function filters(): array
    {
        return [
            'name' => "trim|strip_tags|xss_clean",
            'userFirstName' => "trim|strip_tags|xss_clean",
            'userLastName' => "trim|strip_tags|xss_clean",
        ];
    }
}
