isMethod('post'); $userId = $this->route('user')?->id; return [ 'first_name' => ['required', 'string', 'max:100'], 'middle_name' => ['nullable', 'string', 'max:100'], 'last_name' => ['required', 'string', 'max:100'], 'email' => [ 'required', 'email', 'max:191', Rule::unique('users', 'email') ->ignore($userId) ->whereNull('deleted_at'), ], 'phone' => [ 'required', 'string', 'regex:/^\+?[0-9]{10,15}$/', Rule::unique('users', 'phone') ->ignore($userId) ->whereNull('deleted_at'), ], 'role' => [ 'required', Rule::in([ User::ROLE_SUPER_ADMIN, User::ROLE_ADMIN, User::ROLE_RESIDENT, User::ROLE_DRIVER, User::ROLE_HELPER, User::ROLE_SCANNER, User::ROLE_STORE_PARTNER, ]), ], 'tenant_id' => [ Rule::requiredIf(function () { return $this->input('role') !== User::ROLE_SUPER_ADMIN; }), Rule::prohibitedIf(function () { return $this->input('role') === User::ROLE_SUPER_ADMIN; }), 'nullable', 'integer', 'exists:tenants,id', ], 'password' => $isCreate ? ['required', 'confirmed', Password::min(8)->letters()->numbers()] : ['nullable', 'confirmed', Password::min(8)->letters()->numbers()], ]; } public function messages(): array { return [ 'tenant_id.required' => 'An LGU must be selected for this user role.', 'tenant_id.prohibited' => 'Super Admins cannot be assigned to a specific LGU.', ]; } }