107 lines
4.7 KiB
PHP
107 lines
4.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Bo\Settings;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class UpdateSettingsRequest extends FormRequest
|
|
{
|
|
/**
|
|
* Determine if the user is authorized to make this request.
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function authorize()
|
|
{
|
|
return auth()->check();
|
|
}
|
|
|
|
/**
|
|
* Prepare the data for validation.
|
|
*
|
|
* @return void
|
|
* @phpcs:disable Generic.Metrics.CyclomaticComplexity.TooHigh
|
|
*/
|
|
protected function prepareForValidation()
|
|
{
|
|
// phpcs:enable
|
|
$this->merge([
|
|
// Checkboxes.
|
|
'use_ean_codes' => $this->use_ean_codes ? true : false,
|
|
'activated_teaser' => $this->activated_teaser ? true : false,
|
|
'activated_close_page' => $this->activated_close_page ? true : false,
|
|
'reductions_activated' => $this->reductions_activated ? true : false,
|
|
'winning_proof' => $this->winning_proof ? true : false,
|
|
// Arrays.
|
|
'notification_emails' => $this->notification_emails ? json_decode($this->notification_emails, true) : [],
|
|
// Remove some dates if the checkbox is uncheck.
|
|
'teaser_end_activity' => $this->activated_teaser ? $this->teaser_end_activity : null,
|
|
'close_page_active_date' => $this->activated_close_page ? $this->close_page_active_date : null,
|
|
// Remove reductions datas if the reduction checkbox is uncheck.
|
|
'reductions_site' => $this->reductions_activated ? $this->reductions_site : null,
|
|
'reductions_campaign' => $this->reductions_activated ? $this->reductions_campaign : null,
|
|
'web_coupons' => $this->reductions_activated ?
|
|
($this->web_coupons ? json_decode($this->web_coupons, true) : []) :
|
|
[],
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Get the validation rules that apply to the request.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function rules()
|
|
{
|
|
return [
|
|
'name' => 'required|string|min:3|max:255',
|
|
'start_date' => 'required|date',
|
|
'end_date' => 'required|date',
|
|
'nb_participation_player' => 'required|numeric|min:0',
|
|
'nb_participation_ip' => 'required|numeric|min:0',
|
|
'nb_unique_code_use' => 'required|numeric|min:0',
|
|
'use_ean_codes' => 'required|boolean',
|
|
'activated_teaser' => 'required|boolean',
|
|
'teaser_end_activity' => 'nullable|required_if:activated_teaser,true,1|date|after_or_equal:today',
|
|
'activated_close_page' => 'required|boolean',
|
|
'close_page_active_date' => 'nullable|required_if:activated_close_page,true,1|date|after_or_equal:today',
|
|
'redirect_close' => 'required|url:http,https',
|
|
'reductions_activated' => 'required|boolean',
|
|
'reductions_site' => 'nullable|required_if:reductions_activated,true,1|string|min:3|max:255',
|
|
'reductions_campaign' => 'nullable|required_if:reductions_activated,true,1|string|min:3|max:255',
|
|
'web_coupons' => [
|
|
'nullable',
|
|
'required_if:reductions_activated,true,1',
|
|
'present',
|
|
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
|
'array',
|
|
],
|
|
'web_coupons.*' => 'nullable|array',
|
|
'web_coupons.*.web_coupon_identifiant' => 'required|string|min:3|max:255',
|
|
'web_coupons.*.percentage' => 'required|numeric|min:0|max:100',
|
|
'web_coupons.*.face_value' => 'required|string|min:3|max:255',
|
|
'web_coupons.*.valid_on' => 'required|string|min:3|max:255',
|
|
'web_coupons.*.img_name' => 'required|string|min:3|max:255',
|
|
'notification_emails' => 'nullable|array',
|
|
'notification_emails.*' => 'nullable|array',
|
|
'notification_emails.*.email' => 'required|email',
|
|
'winning_proof' => 'required|boolean',
|
|
'company' => 'required|string|min:3|max:255',
|
|
'analytics' => 'nullable|numeric|min:1',
|
|
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Get custom attributes for validator errors.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function attributes(): array
|
|
{
|
|
return [
|
|
'name' => trans('Nom de la page de gain'),
|
|
'file_name' => trans('Nom du fchier'),
|
|
];
|
|
}
|
|
}
|