get('currentCompany'); $service = app(ContactFieldSettingsService::class); $rules = $service->getValidationRules(auth()->user()); // Always enforce first_name and last_name required $rules['first_name'] = ['required', 'string', 'max:255']; $rules['last_name'] = ['required', 'string', 'max:255']; // Email uniqueness across contacts and contact_email tables $rules['email'] = [ 'max:255', 'sometimes', 'nullable', 'email', Rule::unique('contacts')->where(function ($query) use ($company) { $query->where('company_id', '=', $company->id); $query->whereNull('deleted_at'); }), Rule::unique('contact_email')->where(function ($query) use ($company) { $query->where('company_id', '=', $company->id); $query->whereNull('deleted_at'); }), ]; $rules['profile_picture'] = 'mimes:jpeg,png'; return $rules; } public function withValidator($validator) { $validator->after(function ($validator) { $service = app(ContactFieldSettingsService::class); $errors = $service->validateDependencies(auth()->user(), $this->all()); foreach ($errors as $fieldKey => $messages) { foreach ($messages as $message) { $validator->errors()->add($fieldKey, $message); } } }); } }