'sometimes|nullable|image|max:2048', 'name' => 'sometimes|string|nullable|max:255', 'cpf' => 'sometimes|nullable|string|max:14', 'phone' => 'sometimes|nullable|string|max:20', 'email' => 'sometimes|email', 'password' => 'sometimes|string|nullable|min:8', 'user_type' => 'sometimes|nullable|string|exists:user_types,slug', 'language' => ['sometimes', Rule::enum(LanguageEnum::class)], 'state_id' => 'sometimes|nullable|integer|exists:states,id', 'unit_id' => 'sometimes|nullable|integer|exists:units,id', 'unit_ids' => 'sometimes|nullable|array', 'unit_ids.*' => 'integer|exists:units,id', ]; if ($this->isMethod('post')) { $rules['name'] = 'required|string|max:255'; $rules['email'] = 'required|email|unique:users,email'; $rules['password'] = 'required|string|min:8'; $rules['user_type'] = 'required|string|exists:user_types,slug'; if (!$this->has('language')) { $this->merge(['language' => LanguageEnum::PORTUGUESE->value]); } } return $rules; } }