isMethod('put') && $this->route('id')) { $emailUnique = 'unique:users,email,' . $this->route('id'); $cpfUnique = 'unique:users,cpf,' . $this->route('id'); } $rules = [ 'avatar' => 'sometimes|string|nullable', 'name' => 'sometimes|string|nullable', 'email' => ['sometimes', 'email', $emailUnique], 'password' => 'sometimes|string|nullable', 'type' => ['sometimes', Rule::enum(UserTypeEnum::class)], 'language' => ['sometimes', Rule::enum(LanguageEnum::class)], 'cpf' => ['sometimes', 'nullable', 'string', 'max:14', $cpfUnique], 'registration' => 'sometimes|nullable|string|max:50', 'status' => ['sometimes', Rule::enum(UserStatusEnum::class)], 'admission_date' => 'sometimes|nullable|date', 'expiry_date' => 'sometimes|nullable|date', 'position_id' => 'sometimes|nullable|integer|exists:positions,id', 'sector_id' => 'sometimes|nullable|integer|exists:sectors,id', ]; if ($this->isMethod('post')) { $rules['name'] = 'required|string|max:255'; $rules['email'] = ['required', 'email', $emailUnique]; $rules['password'] = 'required|string|min:6'; if (!$this->has('language')) { $this->merge(['language' => LanguageEnum::PORTUGUESE->value]); } } return $rules; } }