public CustomerResponse SaveCustomer(CustomerRequest addCustomerRequest) { var customerResponse = new CustomerResponse(); Customer customer = addCustomerRequest.Customer; var next = 0; var isCustomerCodeExists = DbContext.Customers.Any(c => c.CustomersCode == customer.CustomersCode); var isVATNoExists = DbContext.Customers.Any(c => c.VATNumber == customer.VATNumber); if (customer.CustomersId == 0) { if (isCustomerCodeExists) { customerResponse.AddValidationError("CustomerCode", "Customer Code already exists!"); } if (isVATNoExists) { customerResponse.AddValidationError("VATNumber", "VAT Number already exists!"); } if (DbContext.Customers.Count() != 0) { next = DbContext.Customers.Max(x => x.CustomersId); } ++next; customer.CustomersCode = String.Concat(Constants.CUSTOMERMASTERPREFIX, next); } else { var OriginalValue = GetOriginalRecord(customer); if (customer.CustomersCode != (String)OriginalValue["CustomersCode"] && isCustomerCodeExists) { customerResponse.AddValidationError("CustomerCode", "Customer Code already exists!"); } if (customer.VATNumber != (String)OriginalValue["VATNumber"] && isVATNoExists) { customerResponse.AddValidationError("VATNumber", "VAT Number already exists!"); } } if (customerResponse.IsValid == false) { return(customerResponse); } customer.AccessedBy = LocalStore.CurrentUser.UserId; customer.AccessedDate = DateTime.Now; if (customer.CustomersId == 0) { DbContext.Customers.AddObject(customer); } // Save user DbContext.SaveChanges(); return(customerResponse); }