<?php

namespace App\Http\Requests\V1;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use App\Rules\UniqueDeviceAndToken;

class ApiUserRegisterRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }



    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $langs = array_keys(config('laravellocalization.supportedLocales'));
        return [
            'name' => 'required|string|min:2|max:100',
            'email' => 'required|string|email|max:100|unique:users',
            'password' => 'required|string|confirmed|min:8',
            'language_id' => [
                'nullable',
                Rule::in($langs)
            ],
            'fcm_token' => 'nullable|string',
            'device_id' => 'required|string',
        ];
    }

    public function validationData(): array
    {
        $data = [
            'name'                   => $this->input('name'),
            'email'                  => $this->input('email'),
            'password'               => $this->input('password'),
            'password_confirmation'  => $this->input('password_confirmation'),
            'fcm_token'              => $this->input('fcm_token'),
            'device_id'              => $this->input('device_id'),
        ];

        // modify data before sending to validator
        if (!isset($data['language_id'])) {
            $data['language_id'] = config('api.default_user_lang');
        }

        return $data;
    }
}
