route('id'); $companyId = auth()->user() ? auth()->user()->company_id : null; return [ 'first_name' => 'sometimes|required|string|max:255', 'last_name' => 'sometimes|nullable|string|max:255', 'email' => [ 'max:255', 'sometimes', 'nullable', 'email', Rule::unique('leads')->ignore($id)->where(function ($query) use ($companyId) { $query->where('company_id', '=', $companyId); $query->whereNull('deleted_at'); }), Rule::unique('lead_email')->ignore($id, 'lead_id')->where(function ($query) use ($companyId) { $query->where('company_id', '=', $companyId); $query->whereNull('deleted_at'); }), Rule::unique('contacts')->where(function ($query) use ($companyId) { $query->where('company_id', '=', $companyId); $query->whereNull('deleted_at'); }), ], 'secondary_email' => 'sometimes|nullable|email', 'annual_revenue' => 'sometimes|nullable|numeric', 'website' => 'sometimes|nullable|url', 'no_of_employees' => 'sometimes|nullable|numeric' ]; } public function withValidator($validator) { $validator->after(function ($validator) { $user = auth()->user(); if (!$user) { return; } $service = app(LeadFieldSettingsService::class); $errors = $service->validateDependencies($user, $this->all()); foreach ($errors as $fieldKey => $messages) { foreach ($messages as $message) { $validator->errors()->add($fieldKey, $message); } } }); } /** * Return JSON on validation failure instead of redirecting. */ protected function failedValidation(Validator $validator) { throw new HttpResponseException( response()->json([ 'status' => false, 'errors' => $validator->errors(), 'message' => 'Validation failed', ], 422) ); } }