Example #1
0
        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);
        }