ldc-supportweb/app/Http/Requests/StoreScheduleRequest.php
2022-08-30 09:22:03 +02:00

80 lines
2.2 KiB
PHP

<?php
namespace App\Http\Requests;
use App\Enums\Planning\ActivityType;
use App\Enums\Planning\CellModel;
use App\Enums\Planning\TableRow;
use Illuminate\Foundation\Http\FormRequest;
use Kwaadpepper\Enum\Rules\EnumIsValidRule;
class StoreScheduleRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return boolean
*/
public function authorize()
{
return auth()->check() and $this->ajax();
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'user_id' => 'required|exists:users,id',
'date' => 'date_format:d/m/Y',
'activity' => [
'required',
new EnumIsValidRule(ActivityType::class),
function ($attribute, $value, $fail) {
if (
\in_array($value, [
\strval(ActivityType::dev()->value),
\strval(ActivityType::projects()->value),
]) and
is_null($this->id_lie)
) {
$fail(trans("$attribute : Il est obligatoire d'assigner un type d'élement lié au ticket"));
}
}
],
'slot' => [
'required',
new EnumIsValidRule(TableRow::class)
],
'model_lie' => [
'nullable',
new EnumIsValidRule(CellModel::class)
],
'id_lie' => [
'required_with:model_lie',
'nullable',
'numeric',
],
'description' => 'required|string|min:3|max:90'
];
}
/**
* Get custom attributes for validator errors.
*
* @return array
*/
public function attributes(): array
{
return [
'user_id' => \trans('utilisateur'),
'activity' => \trans('type d\'activitée'),
'model_lie' => \trans('type d\'élément lié'),
'id_lie' => \trans('élément lié'),
'slot' => \trans('ligne de la journée'),
];
}
}