Пример #1
0
 // POST: api/Customer
 public void Post([FromBody] Customer value)
 {
     if (!ModelState.IsValid)
     {
         throw new HttpResponseException(HttpStatusCode.BadRequest);
     }
     _customerService.AddOrUpdate(value);
 }
Пример #2
0
        public Guid?Post(CustomerVm customerVm)
        {
            try
            {
                var customer = new Customer()
                {
                    Will            = _willService.Get(customerVm.WillId),
                    FirstName       = customerVm.FirstName,
                    LastName        = customerVm.LastName,
                    DateOfBirth     = new DateTime(customerVm.DateOfBirth.Year, customerVm.DateOfBirth.Month, customerVm.DateOfBirth.Day),
                    Address         = customerVm.Address.ToAddress(),
                    Telephone       = customerVm.Telephone,
                    MaritalStatusId = customerVm.MaritalStatusId,
                    //MaritalStatus = _maritalStatusVmService.Get(customerVm.MaritalStatusId),
                    UpdatedUtc = DateTime.UtcNow
                };

                return(_customerService.AddOrUpdate(customer));
            }
            catch (Exception e)
            {
                _logger.LogWarning("CustomerVmService Post exception", e.Message);
                return(null);
            }
        }
Пример #3
0
        public ActionResult Create(CustomerViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    customerService.AddOrUpdate(model);
                    return(RedirectToAction("Index")
                           .WithSuccess(string.Format("Customer \"{0} {1}\" has been added".TA(), model.BillingAddress.FirstName,
                                                      model.BillingAddress.LastName)));
                }
                catch (ArgumentException err)
                {
                    ModelState.AddModelError(err.ParamName ?? "", err.Message);
                }
            }

            ViewBag.Countries = db.Countries.Where(c => c.IsActive).OrderBy(c => c.Name).ToList();

            return(View(model));
        }
Пример #4
0
 public ActionResult Create(CustomerModel model)
 {
     if (_customerSerice.ExistEamil(model.Email, model.Id))
     {
         ErrorNotification("邮箱已存在!");
         return(View(model));
     }
     if (_customerSerice.ExistName(model.Name, model.Id))
     {
         ErrorNotification("用户名已存在!");
         return(View(model));
     }
     model.Type = CustomerTypeEnum.Admin;
     if (_customerSerice.AddOrUpdate(model))
     {
         SuccessNotification("保存成功!");
     }
     return(RedirectToAction("List"));
 }
Пример #5
0
        public ActionResult Checkout(ShoppingCartCheckoutViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(JsonValidationError());
            }

            // Get cart contents
            ShoppingCart cart = GetOrCreateCart();

            if (!cart.ShoppingCartItems.Any())
            {
                return(JsonError("Your shopping cart is empty!"));
            }

            // Check quantity
            foreach (ShoppingCartItem cartItem in cart.ShoppingCartItems)
            {
                Product product = db.Products.Find(cartItem.ProductId);
                int?    qty     = null;
                if (cartItem.ProductSkuId.HasValue && cartItem.ProductSku.Quantity.HasValue)
                {
                    qty = cartItem.ProductSku.Quantity.Value;
                }
                if (qty == null && product.Quantity.HasValue)
                {
                    qty = product.Quantity.Value;
                }
                if (qty.HasValue && qty < cartItem.Quantity)
                {
                    return(JsonError(string.Format("The requested quantity for \"{0}\" is not available", product.Name)));
                }
            }

            // Get current user (or create a new one)
            User user = null;

            if (User.Identity.IsAuthenticated)
            {
                user = customerService.Find(currentUser.User.Id);
            }
            if (user == null)
            {
                var userModel = new CustomerViewModel
                {
                    FirstName   = model.BillingAddress.FirstName,
                    LastName    = model.BillingAddress.LastName,
                    Company     = model.BillingAddress.Company,
                    PhoneNumber = model.BillingAddress.Phone,
                    Email       = model.Email
                };
                try
                {
                    user = customerService.AddOrUpdate(userModel);
                }
                catch (ArgumentException err)
                {
                    return(JsonError(err.Message));
                }

                customerService.LoginUser(HttpContext, user);
            }

            // Get addresses
            var billingAddress = Mapper.Map <Address>(model.BillingAddress);

            billingAddress.Type = AddressType.Billing;

            var shippingAddress = Mapper.Map <Address>(model.SameShippingAddress
                ? model.BillingAddress
                : model.ShippingAddress);

            shippingAddress.Type = AddressType.Shipping;

            var defaultBillingAddress = customerService.GetAddress(user.Id, AddressType.Billing);

            if (defaultBillingAddress == null)
            {
                // Add default billing address
                defaultBillingAddress           = Mapper.Map <Address>(model.BillingAddress);
                defaultBillingAddress.Type      = AddressType.Billing;
                defaultBillingAddress.IsPrimary = true;
                user.Addresses.Add(defaultBillingAddress);
            }

            var defaultShippingAddress = customerService.GetAddress(user.Id, AddressType.Shipping);

            if (defaultShippingAddress == null)
            {
                // Add default shipping address
                defaultShippingAddress = Mapper.Map <Address>(model.SameShippingAddress
                    ? model.BillingAddress
                    : model.ShippingAddress);
                defaultShippingAddress.Type      = AddressType.Shipping;
                defaultShippingAddress.IsPrimary = true;
                user.Addresses.Add(defaultShippingAddress);
            }

            db.SaveChanges();

            // Create order
            var order = new Order
            {
                UserId          = user.Id,
                BillingAddress  = billingAddress,
                ShippingAddress = shippingAddress,
                DatePlaced      = DateTime.Now,
                DateUpdated     = DateTime.Now,
                IPAddress       = Request.UserHostAddress,
                UserComments    = model.UserComments,
                Status          = OrderStatus.AwaitingPayment
            };

            db.Orders.Add(order);

            TaxZone taxZone = taxZoneService.Find(billingAddress.CountryCode, billingAddress.RegionId);

            foreach (ShoppingCartItem cartItem in cart.ShoppingCartItems)
            {
                Product    product    = db.Products.Find(cartItem.ProductId);
                ProductSku productSku = cartItem.ProductSku;

                if (productSku != null && productSku.Quantity.HasValue)
                {
                    productSkuService.RemoveQuantity(productSku.Id, cartItem.Quantity);
                }
                else if (product.Quantity.HasValue)
                {
                    productService.RemoveQuantity(product.Id, cartItem.Quantity);
                }

                decimal price = product.SalePrice ?? product.Price;
                if (cartItem.ProductSkuId.HasValue && cartItem.ProductSku.Price.HasValue)
                {
                    price = cartItem.ProductSku.Price.Value;
                }

                var cartItemOptions  = JsonConvert.DeserializeObject <ShoppingCartItemOptionViewModel[]>(cartItem.Options);
                var orderItemOptions = Mapper.Map <OrderItemOption[]>(cartItemOptions);

                var orderItem = new OrderItem
                {
                    Order        = order,
                    ProductId    = product.Id,
                    ProductSkuId = cartItem.ProductSkuId,
                    Quantity     = cartItem.Quantity,
                    Options      = JsonConvert.SerializeObject(orderItemOptions),
                    ItemPrice    = price
                };

                db.OrderItems.Add(orderItem);

                order.Subtotal += cartItem.Quantity * price;

                if (taxZone != null)
                {
                    order.TaxAmount += taxRateService.CalculateTax(taxZone.Id, product.TaxClassId, price * cartItem.Quantity);
                }
            }

            ShippingMethod shippingMethod = db.ShippingMethods.Find(model.ShippingMethodId);

            order.ShippingAmount = shippingService.CalculateShipping(shippingMethod,
                                                                     cart.ShoppingCartItems.Sum(i => i.Quantity),
                                                                     cart.ShoppingCartItems.Sum(i => i.Quantity * i.Product.Weight),
                                                                     order.Subtotal, shippingAddress).GetValueOrDefault();

            order.Total = order.Subtotal + order.ShippingAmount;
            if (!settings.Get <bool>(SettingField.TaxIncludedInPrices))
            {
                order.Total += order.TaxAmount;
            }

            db.SaveChanges();

            return(JsonSuccess(new { orderId = order.Id, paymentMethodId = model.PaymentMethodId }));
        }
Пример #6
0
        public ActionResult Create(OrderEditViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(JsonValidationError());
            }

            var user = customerService.FindAll().FirstOrDefault(u => u.Email == model.UserEmail);

            if (user == null)
            {
                var userModel = new CustomerViewModel
                {
                    FirstName   = model.BillingAddress.FirstName,
                    LastName    = model.BillingAddress.LastName,
                    Company     = model.BillingAddress.Company,
                    PhoneNumber = model.BillingAddress.Phone,
                    Email       = model.UserEmail
                };
                try
                {
                    user = customerService.AddOrUpdate(userModel);
                }
                catch (ArgumentException err)
                {
                    return(JsonError(err.Message));
                }
            }

            // Get addresses
            var billingAddress = Mapper.Map <Address>(model.BillingAddress);

            billingAddress.Type = AddressType.Billing;

            var shippingAddress = Mapper.Map <Address>(model.SameShippingAddress
                ? model.BillingAddress
                : model.ShippingAddress);

            shippingAddress.Type = AddressType.Shipping;

            var defaultBillingAddress = customerService.GetAddress(user.Id, AddressType.Billing);

            if (defaultBillingAddress == null || defaultBillingAddress.FirstName == null)
            {
                // Add default billing address
                defaultBillingAddress           = Mapper.Map <Address>(model.BillingAddress);
                defaultBillingAddress.Type      = AddressType.Billing;
                defaultBillingAddress.IsPrimary = true;
                if (defaultBillingAddress.Id == 0)
                {
                    user.Addresses.Add(defaultBillingAddress);
                }
            }

            var defaultShippingAddress = customerService.GetAddress(user.Id, AddressType.Shipping);

            if (defaultShippingAddress == null || defaultBillingAddress.FirstName == null)
            {
                // Add default shipping address
                defaultShippingAddress = Mapper.Map <Address>(model.SameShippingAddress
                    ? model.BillingAddress
                    : model.ShippingAddress);
                defaultShippingAddress.Type      = AddressType.Shipping;
                defaultShippingAddress.IsPrimary = true;
                if (defaultShippingAddress.Id == 0)
                {
                    user.Addresses.Add(defaultShippingAddress);
                }
            }

            db.SaveChanges();

            // Create order
            var order = new Order
            {
                UserId          = user.Id,
                BillingAddress  = billingAddress,
                ShippingAddress = shippingAddress,
                DatePlaced      = DateTime.Now,
                DateUpdated     = DateTime.Now,
                IPAddress       = Request.UserHostAddress,
                UserComments    = model.UserComments,
                Status          = OrderStatus.AwaitingPayment,
                Discount        = model.Discount,
                ShippingAmount  = model.ShippingAmount,
            };

            db.Orders.Add(order);

            var itemDiscount = 0m;

            if (model.Discount < 0)
            {
                itemDiscount = model.Discount / model.Items.Count;
            }

            foreach (var item in model.Items)
            {
                Product product = productFinder.Find(item.ProductId);

                var orderItem = new OrderItem
                {
                    Order        = order,
                    ProductId    = item.ProductId,
                    ProductSkuId = item.ProductSkuId,
                    Quantity     = item.Quantity,
                    Options      = item.Options,
                    ItemPrice    = item.ItemPrice
                };

                db.OrderItems.Add(orderItem);

                order.Subtotal += orderItem.Quantity * orderItem.ItemPrice;

                order.TaxAmount += taxService.CalculateTax(billingAddress.CountryCode, billingAddress.RegionId,
                                                           product.TaxClassId, (orderItem.ItemPrice + itemDiscount) * orderItem.Quantity);
            }

            order.Total = order.Subtotal + order.Discount + order.ShippingAmount;
            if (!settingService.Get <bool>(SettingField.TaxIncludedInPrices))
            {
                order.Total += order.TaxAmount;
            }

            db.SaveChanges();

            return(JsonSuccess(new { orderId = order.Id })
                   .WithSuccess("Order created successfully".TA()));
        }
Пример #7
0
        public async Task <NewtonsoftJsonActionResult <ValidateResult <CrmEntity> > > AddOrUpdate([FromBody] Object body)
        {
            JObject jo = JObject.Parse(body.ToString());

            return(await _customerService.AddOrUpdate(jo));
        }