merge([ 'tasks' => request()->tasks ? \collect(json_decode(request()->tasks)) ->map(function ($task) { return \array_intersect_key((array)$task, Invoice::getTaskStructure()); })->toArray() : [], 'show_days' => $this->show_days ? true : false, ]); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'firstname' => 'required|string|min:3|max:255', 'lastname' => 'required|string|min:3|max:255', 'object' => 'required|string|min:3|max:255', 'tasks' => 'required|array|min:1', 'tasks.*' => 'required|array', 'tasks.*.days' => 'required|numeric|min:0.125', 'tasks.*.amount' => 'required|numeric|min:0.125', 'tasks.*.desc' => 'required|string|min:10', 'tasks.*.type' => [ 'required', new Enum(TaskTypeEnum::class) ], 'tasks.*.package' => 'required_if:tasks.*.type,' . TaskTypeEnum::package->value . '|nullable|exists:packages,id', 'comment' => 'sometimes|nullable|string|min:15', 'show_days' => 'required|boolean', 'site_id' => 'required|integer|exists:sites,id', 'company_id' => 'required|integer|exists:companies,id', 'invoiced_to_id' => 'required|integer|exists:companies,id', ]; } /** * Get custom attributes for validator errors. * * @return array */ public function attributes(): array { return [ 'firstname' => trans('Prénom de la personne associée'), 'lastname' => trans('Nom de la personne associée'), 'object' => trans('Objet du devis'), 'tasks' => trans('Tâches du devis'), 'tasks.*' => trans('Tâches du devis'), 'tasks.*.days' => trans('Nombre de jours dédiés à la tâche'), 'tasks.*.amount' => trans('Montant dédié à la tâche'), 'tasks.*.desc' => trans('Description dédié à la tâche'), 'tasks.*.type' => trans('Type de tâche'), 'tasks.*.package' => trans('Forfait dédié à la tâche'), 'comment' => trans('Commentaire du devis'), 'show_days' => trans('Visibilité des jours'), 'site_id' => trans('Site associé'), 'company_id' => trans('Companie associé'), 'invoiced_to_id' => trans('Entité à facturer'), 'signed_date' => trans('Date de signature du Devis'), 'sent_client_date' => trans('Date d\'envoi du Devis au client'), 'sent_accounting_date' => trans('Date d\'envoi du Devis à la comptabilité'), 'status' => trans('État du devis'), ]; } }