80 lines
2.2 KiB
PHP
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'),
|
|
];
|
|
}
|
|
}
|