ldc-supportweb/app/Http/Requests/Bo/StoreScheduleRequest.php
2023-08-14 09:23:39 +00:00

80 lines
2.2 KiB
PHP

<?php
namespace App\Http\Requests\Bo;
use App\Enums\Planning\ActivityTypeEnum;
use App\Enums\Planning\CellModelEnum;
use App\Enums\Planning\TableRowEnum;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rules\Enum;
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 Enum(ActivityTypeEnum::class),
function ($attribute, $value, $fail) {
if (
\in_array($value, [
ActivityTypeEnum::dev->name(),
ActivityTypeEnum::projects->name(),
]) and
is_null($this->id_lie)
) {
$fail(trans("$attribute : Il est obligatoire d'assigner un type d'élement lié au ticket"));
}
}
],
'slot' => [
'required',
new Enum(TableRowEnum::class)
],
'model_lie' => [
'nullable',
new Enum(CellModelEnum::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'),
];
}
}