merge([ 'published' => $this->boolean('published'), 'tenants' => ($this->input('role') == RoleEnum::conceptor->value()) ? null : $this->input('tenants'), ]); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(): array { $isAdmin = $this->input('role') == RoleEnum::admin->value(); return [ 'first_name' => 'required|string|min:3|max:255', 'last_name' => 'required|string|min:3|max:255', 'email' => [ 'required', 'email:rfc,strict,dns,spoof,filter', Rule::unique('users', 'email') ], 'role' => ['required', new Enum(RoleEnum::class)], 'tenants' => $isAdmin ? 'required|array' : 'nullable|array', 'tenants.*' => $isAdmin ? 'required|array' : 'nullable|array', 'tenants.*.id' => $isAdmin ? 'required|exists:tenants,id' : 'nullable|exists:tenants,id', 'published' => 'required|boolean', ]; } /** * Get custom attributes for validator errors. * * @return array */ public function attributes(): array { return [ 'first_name' => trans('validation.attributes.first_name'), 'last_name' => trans('validation.attributes.last_name'), 'email' => trans('validation.attributes.email'), 'role' => trans('validation.attributes.role'), 'tenants' => Str::of(trans('models.classes.tenant'))->plural(), 'published' => trans('validation.attributes.published'), ]; } }