<?php

namespace App\Http\Requests;

use App\Libs\Security\XSSCleanFilter;
use App\Http\Controllers\Admin\ConfigurationManageTrait;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use Waavi\Sanitizer\Laravel\SanitizesInput;

class BackendConfigurationStore extends FormRequest
{
    use SanitizesInput;
    use ConfigurationManageTrait;

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */

    public function authorize() {
        return $this->_canEditConfigurations();
    }

    protected function validationData()
    {
        $emailString = str_replace(' ', '', $this->input('contact_form_emails'));
        return [
            'mailchimp_key'       => (string)$this->input('mailchimp_key'),
            'mailchimp_list_id'   => (string)$this->input('mailchimp_list_id'),
            'contact_form_emails' => explode(',', $emailString),
            'google_analytics'   => (string)$this->input('google_analytics'),
        ];
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'mailchimp_key' => 'string',
            'mailchimp_list_id' => 'string',
            'google_analytics' => 'string',
            'contact_form_emails' => 'array',
            'contact_form_emails.*' => 'string|email',
        ];
    }
    /**
     * Filters to be applied to the input.
     *
     * @return array
     */
    public function filters()
    {
        return [
            'mailchimp_key' => "trim|strip_tags|xss_clean",
            'mailchimp_list_id' => "trim|strip_tags|xss_clean",
            'contact_form_emails' => "trim|strip_tags|xss_clean",
            'google_analytics' => "trim|strip_tags|xss_clean",
        ];
    }

    public function customFilters()
    {
        return ['xss_clean' => XSSCleanFilter::class];
    }
}
