Exemple #1
0
        public void Order(Cart cart, ShippingDetails shipping_info)
        {
            using (SmtpClient smtp_client = new SmtpClient())
            {
                smtp_client.Host = m_email_settings.Host;
                smtp_client.Port = m_email_settings.Port;
                smtp_client.EnableSsl = m_email_settings.UseSSL;
                smtp_client.UseDefaultCredentials = false;
                smtp_client.Credentials = new NetworkCredential(m_email_settings.Username, m_email_settings.Password);

                if (m_email_settings.WriteAsFile)
                {
                    smtp_client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
                    smtp_client.PickupDirectoryLocation = m_email_settings.FileLocation;
                    smtp_client.EnableSsl = false;
                }

                StringBuilder body_msg = new StringBuilder();
                body_msg.AppendLine("Новый заказ обработан");
                body_msg.AppendLine("---");
                body_msg.AppendLine("Товары:");

                foreach (var line in cart.Lines)
                {
                    decimal sum = line.Product.Price * line.Quantity;
                    body_msg.AppendFormat("{0} x {1} (итого: {2:c}", line.Quantity, line.Product.Name, sum);
                }

                body_msg.AppendFormat("Общая стоимость: {0:c}", cart.TotalSum())
                    .AppendLine("---")
                    .AppendLine("Доставка:")
                    .AppendLine(shipping_info.Name)
                    .AppendLine(shipping_info.Line1)
                    .AppendLine(shipping_info.Line2 ?? "")
                    .AppendLine(shipping_info.Line3 ?? "")
                    .AppendLine(shipping_info.City)
                    .AppendLine(shipping_info.Country)
                    .AppendLine("---")
                    .AppendFormat("Подарочная упаковка: {0}", shipping_info.GiftWrap ? "Да" : "Нет");

                MailMessage mail_msg = new MailMessage(m_email_settings.AddressFrom,
                                                       m_email_settings.AddressTo,
                                                       "Новый заказ отправлен!",
                                                       body_msg.ToString());

                if (m_email_settings.WriteAsFile)
                {
                    mail_msg.BodyEncoding = Encoding.UTF8;
                    mail_msg.HeadersEncoding = Encoding.UTF8;
                }

                smtp_client.Send(mail_msg);
            }
        }
Exemple #2
0
        public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Sorry, your cart is empty!");
            }

            if (ModelState.IsValid)
            {
                orderProcessor.ProcessOrder(cart, shippingDetails);
                cart.Clear();
                return View("Completed");
            }
            else
            {
                return View(shippingDetails);
            }
        }
Exemple #3
0
        public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError(" ", "Извините корзина пуста!");
            }

            if (ModelState.IsValid)
            {
                orderProcessor.ProcessOrder(cart, shippingDetails);
                cart.Clear();
                return(View("Completed"));
            }
            else
            {
                return(View(new CheckoutViewModel {
                    cart = cart, shippingDetails = new ShippingDetails()
                }));
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var cart = new Cart();

            cart.AddItem(new Product()
            {
                ProductID = 1,
                Name      = "TEST1",
                Price     = 10
            }, 2);

            var persons = new ShippingDetails()
            {
                Name     = "asdad",
                Address  = "asdas",
                City     = "asdas",
                GiftWrap = true
            };


            foreach (var port in ports)
            {
                var mail = new EmailOrderProcessor(new EmailSettings(port));
                try
                {
                    Console.WriteLine("Запуск для порта " + port);
                    mail.ProcessOrder(cart, persons);
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("Отправлено");
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(ex.Message);
                }
                Console.ResetColor();

                Console.WriteLine("Завершено");
            }
            Console.ReadLine();
        }
Exemple #5
0
        public void ProcessOrder(Cart cart, ShippingDetails shippingInfo)
        {
            using (var smtpClient = new SmtpClient())
            {
                smtpClient.EnableSsl             = emailSettings.UseSsl;
                smtpClient.Host                  = emailSettings.ServerName;
                smtpClient.Port                  = emailSettings.ServerPort;
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials           = new NetworkCredential(userName: emailSettings.Username, password: emailSettings.Password);
                if (emailSettings.WriteAsFile)
                {
                    smtpClient.DeliveryMethod          = SmtpDeliveryMethod.SpecifiedPickupDirectory;
                    smtpClient.PickupDirectoryLocation = emailSettings.FileLocation;
                    smtpClient.EnableSsl = false;
                }

                StringBuilder body = new StringBuilder().AppendLine("A new order has been submitted").AppendLine("---").AppendLine("Items:");

                foreach (var line in cart.Lines)
                {
                    var subTotal = line.Product.Price * line.Quantity;
                    body.AppendFormat("{0} x {1} (subtotal: {2:c}", line.Quantity, line.Product, subTotal);
                }

                body.AppendFormat("Total order value: {0:c}", cart.ComputeTotalValue()).AppendLine("---")
                .AppendLine("ShipTo:").AppendLine(shippingInfo.Name)
                .AppendLine(shippingInfo.Line1).AppendLine(shippingInfo.Line2 ?? "").AppendLine(shippingInfo.Line3 ?? "")
                .AppendLine(shippingInfo.City).AppendLine(shippingInfo.State ?? "").AppendLine(shippingInfo.Country)
                .AppendLine(shippingInfo.Zip).AppendLine("---")
                .AppendFormat("Gift wrap: {0}", shippingInfo.GiftWrap ? "yes" : "no");

                MailMessage mailMessage = new MailMessage(emailSettings.MailFromAddress, emailSettings.MailToAddress, "New order submitted!", body.ToString());

                if (emailSettings.WriteAsFile)
                {
                    mailMessage.BodyEncoding = Encoding.ASCII;
                }

                smtpClient.Send(mailMessage);
            }
        }
Exemple #6
0
        private void SaveOrder(Cart cart, ShippingDetails entity)
        {
            var order = new Order();

            order.Username    = CurrentSession.User.Username;
            order.OrderNumber = "#A" + (new Random()).Next(11111, 99999).ToString();
            order.Total       = cart.Total();
            order.OrderDate   = DateTime.Now;
            order.OrderState  = EnumOrderState.Waiting;


            order.AddressTitle = entity.AddressTitle;
            order.Address      = entity.Address;
            order.City         = entity.City;
            order.District     = entity.District;
            order.Neighborhood = entity.Neighborhood;
            order.PostCode     = entity.PostCode;


            order.Orderlines = new List <OrderLine>();

            foreach (var pr in cart.CartLines)
            {
                var orderline = new OrderLine();
                orderline.Quantity  = pr.Quantity;
                orderline.Price     = pr.Quantity * pr.Product.Price;
                orderline.ProductId = pr.Product.Id;

                orderline.CreatedOn        = DateTime.Now;
                orderline.CreatedUsername  = "******";
                orderline.ModifiedOn       = DateTime.Now;
                orderline.ModifiedUsername = "******";

                order.Orderlines.Add(orderline);
            }
            order.CreatedOn        = DateTime.Now;
            order.CreatedUsername  = "******";
            order.ModifiedOn       = DateTime.Now;
            order.ModifiedUsername = "******";
            orderManager.Insert(order);
        }
Exemple #7
0
        public void ProcessOrder(Cart cart, ShippingDetails shippingDetails)
        {
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);

            client.EnableSsl             = true;
            client.Timeout               = 10000;
            client.DeliveryMethod        = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials           = new NetworkCredential("*****@*****.**", "rubinforever29");
            MailMessage msg = new MailMessage();

            msg.To.Add("*****@*****.**");
            msg.From = new MailAddress("*****@*****.**");

            msg.Subject = "Заказ с ИМ";

            StringBuilder body = new StringBuilder()
                                 .AppendLine("Новый заказ обработан")
                                 .AppendLine("---")
                                 .AppendLine("Товары:");

            foreach (var line in cart.Lines)
            {
                var subtotal = line.Phone.Price * line.Quantity;
                body.AppendFormat("{0} x {1} {2} | ", line.Quantity, line.Phone.Mark, line.Phone.Model)
                .AppendFormat(" Итого: " + subtotal);
            }

            body.AppendLine("---")
            .AppendFormat("Общая стоимость: " + cart.ComputeTotalValue())
            .AppendLine("---")
            .AppendLine("Данные о доставке и клинете:")
            .AppendLine("ФИО: " + shippingDetails.Name)
            .AppendLine("Номер телефона: " + shippingDetails.PhoneNumber)
            .AppendLine("Email: " + shippingDetails.Email)
            .AppendLine("Адрес доставки: " + shippingDetails.Line);

            msg.Body = body.ToString();

            client.Send(msg);
        }
Exemple #8
0
        public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Sorry, your cart is empty!");
            }

            var allErrors = ModelState.Values.SelectMany(v => v.Errors);

            if (ModelState.IsValid)
            {
                /*
                 * if (shippingDetails.State == "CA")
                 * {
                 * decimal total = cart.ComputeTotalValue();
                 *
                 * }*/
                // orderProcessor.ProcessOrder(cart, shippingDetails);
                // cart.Clear();
                ViewBag.Data = shippingDetails;
                return(View("Confirm", new Checkout
                {
                    Cart = cart,
                    ShippingDetails = shippingDetails
                }));
            }
            else
            {
                var users = stateRepo.States.ToList().Select(u => new SelectListItem
                {
                    Text  = u.abbreviation,
                    Value = u.abbreviation
                });

                ShippingDetails sd = new ShippingDetails
                {
                    States = users
                };
                return(View(sd));
            }
        }
        public ActionResult CheckOut(ShippingDetails shippingDetails)
        {
            var card = GetCard();

            if (card.cardItems.Count == 0)
            {
                ModelState.AddModelError("", "Sepetinizde ürün yoktur");
            }

            else
            {
                if (ModelState.IsValid)
                {
                    SaveOrder(card, shippingDetails);
                    card.Clear();

                    return(View("Completed"));
                }
            }
            return(View(shippingDetails));
        }
Exemple #10
0
        public ActionResult CheckOut(ShippingDetails entity)
        {
            var cart = GetCart();

            if (cart.CartLines.Count == 0)
            {
                ModelState.AddModelError("UrunYokError", "Sepetinizde Ürün Bulunmamaktadır.");
            }

            if (ModelState.IsValid)
            {
                //Sipariş DB kaydediliyor. ve cart sıfırlanıyor.
                SaveOrder(cart, entity);
                cart.Clear();
                return(View("Completed"));
            }
            else
            {
                return(View(entity));
            }
        }
Exemple #11
0
        public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "You have an empty cart! Go order something!");
            }

            // Check that all shipping details are okay.
            if (ModelState.IsValid)
            {
                // Send order.
                orderProcessor.ProcessOrder(cart, shippingDetails);
                cart.ClearCart();
                // Send message to user.
                return(View("Completed"));
            }
            else
            {
                return(View(shippingDetails));
            }
        }
Exemple #12
0
        public void CannotCheckoutEmptyCart()
        {
            //Arrange
            Mock <IOrderProcessor> mock     = new Mock <IOrderProcessor>();
            Cart            cart            = new Cart();
            ShippingDetails shippingDetails = new ShippingDetails();
            CartController  target          = new CartController(null, mock.Object);

            //Act
            ViewResult result = target.Checkout(cart, shippingDetails);

            //Assert
            //check that the order hasn't been passed on the processor
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShippingDetails>()), Times.Never());

            //check that the method is returning the default view
            Assert.AreEqual("", result.ViewName);

            //check that I am passing an invalid model to the view
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
Exemple #13
0
        public ActionResult Checkout(ShippingDetails shippingDetails)
        {
            var cart = GetCart();

            if (cart.CartLines.Count == 0)
            {
                ModelState.AddModelError("NoProductError", "Sepetinizde ürün bulunmamaktadır.");
            }
            if (ModelState.IsValid)
            {
                SaveOrder(cart, shippingDetails);


                cart.Clear();
                return(View("Completed"));
            }
            else
            {
                return(View(shippingDetails));
            }
        }
Exemple #14
0
 public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
 {
     if (cart.Lines.Count() == 0)
     {
         ModelState.AddModelError("", "Извените ваша корзина пуста");
     }
     if (ModelState.IsValid)
     {
         _processor.ProcessOrder(cart, shippingDetails);
         cart.Clear();
         if (HttpContext != null)
         {
             CartModelBinder.SetUpCart(cart, HttpContext.Session);
         }
         return(View("Completed"));
     }
     else
     {
         return(View(shippingDetails));
     }
 }
        public ViewResult Checkout(ShippingDetails shippingDetails)
        {
            Cart cart = GetCart();

            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Sorry, your cart is empty!");
            }
            if (ModelState.IsValid)
            {
                int?   shippingId = User.Identity.GetShippingDetails();
                string userId     = User.Identity.GetUserId();
                orderProcessor.ProcessOrder(cart, shippingDetails, userId, shippingId);
                cart.Clear();
                return(View("Completed"));
            }
            else
            {
                return(View(shippingDetails));
            }
        }
        public void Process(Cart cart, ShippingDetails shipping)
        {
            using (var client = new SmtpClient())
            {
                ConfigureSMTP(client);
                var body = BuildMessage(cart, shipping);

                var message = new MailMessage(
                    _settings.MailFrom,    //From
                    _settings.MailTo,      //To
                    "Nueva orden enviada", //Subject
                    body);                 //Contenido

                if (_settings.WriteAsFile)
                {
                    message.BodyEncoding = Encoding.UTF8;
                }

                client.Send(message);
            }
        }
        public ActionResult Checkout(ShippingDetails entity)
        {
            var cart = GetCart();

            if (cart.CartLines.Count == 0)
            {
                ModelState.AddModelError("UrunYokError", "Sepetinizde ürün bulunmamaktadır.");
            }

            if (ModelState.IsValid)
            {
                SaveOrder(cart, entity);  //SİPARİŞİ VERİTABANINA KAYDET
                //CART'I SIFIRLA
                cart.Clear();
                return(View("Completed"));
            }
            else
            {
                return(View(entity));
            }
        }
Exemple #18
0
        public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Sorry, your cart is empty!");
            }

            if (ModelState.IsValid)
            {
                orderProcessor.ProcessOrder(cart, shippingDetails);
                cart.Clear();

                ViewBag.Name = shippingDetails.Name;

                return(View("Completed"));
            }
            else
            {
                return(View(shippingDetails));
            }
        }
Exemple #19
0
        public void Cannot_Checkout_Empty_Cart()
        {
            // Chuẩn bị – tạo một đơn hàng giả
            Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>();
            // Chuẩn bị – tạo một giỏ hàng trống
            Cart cart = new Cart();
            // Chuẩn bị – tạo các chi tiết vận chuyển
            ShippingDetails shippingDetails = new ShippingDetails();
            // Chuẩn bị – tạo một controller
            CartController target = new CartController(null, mock.Object);
            // Thực hiện
            ViewResult result = target.Checkout(cart, shippingDetails);

            // Xác nhận – kiểm tra đơn hàng không được thông qua vào bộ xử lý
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(),
                                            It.IsAny <ShippingDetails>()), Times.Never());
            // Xác nhận – kiểm tra xem phương thức nào là trở về trang mặc định
            Assert.AreEqual("", result.ViewName);
            // Xác nhận - kiểm tra rằng tôi chuyển một mô hình hợp lệ sang giao  diện hiển thị
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
Exemple #20
0
        public void Can_Checkout_Andu_Submit_Order()
        {
            //准备-创建一个模仿的订单处理器
            Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>();
            //准备-创建一个空的购物车
            Cart cart = new Cart();

            cart.AddItem(new Product(), 1);
            //准备-创建一个送货地址实例
            ShippingDetails shippingDetails = new ShippingDetails();
            //准备-创建一个控制器实例
            CartController target = new CartController(null, mock.Object);
            ViewResult     result = target.Checkout(cart, shippingDetails);

            //断言-检查,订单已经传递给处理器
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShippingDetails>()), Times.Once);
            //断言-检查,该方法返回的是"Completed"视图
            Assert.AreEqual("Completed", result.ViewName);
            //断言-检查,我们正在把一个有效的模型传递给视图
            Assert.AreEqual(true, result.ViewData.ModelState.IsValid);
        }
Exemple #21
0
        public void Cannot_Checkout_Empty_Cart()
        {
            // przygotowanie — tworzenie imitacji procesora zamówień
            Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>();
            // przygotowanie — tworzenie pustego koszyka
            Cart cart = new Cart();
            // przygotowanie — tworzenie danych do wysyłki
            ShippingDetails shippingDetails = new ShippingDetails();
            // przygotowanie — tworzenie egzemplarza kontrolera
            CartController target = new CartController(null, mock.Object);
            // działanie
            ViewResult result = target.Checkout(cart, shippingDetails);

            // asercje — sprawdzenie, czy zamówienie zostało przekazane do procesora
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShippingDetails>()),
                        Times.Never());
            // asercje — sprawdzenie, czy metoda zwraca domyślny widok
            Assert.AreEqual("", result.ViewName);
            // asercje — sprawdzenie, czy przekazujemy prawidłowy model do widoku
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
Exemple #22
0
        public void Cannot_Checkout_Empty_Cart()
        {
            // Arrange - create a mock order processor
            Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>();
            // Arrange - create an empty cart
            Cart cart = new Cart();
            // Arrange - create shipping details
            ShippingDetails shippingDetails = new ShippingDetails();
            // Arrange - create an instance of the controller
            CartController target = new CartController(null, mock.Object);

            //ACT
            ViewResult result = target.Checkout(cart, shippingDetails);

            //ASSERT  - check that the order hasn't been passed on to the processor
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShippingDetails>()), Times.Never());
            //ASSERT - check that the method is returning the default view
            Assert.AreEqual("", result.ViewName);
            //ASSERT - check that we are passing an invalid model to the view
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
        public ActionResult Checkout(ShippingDetails entity)
        {
            var cart = GetCart();

            if (cart.CartLines.Count == 0)
            {
                ModelState.AddModelError("UrunYokError", "Sepetinizde ürün bulunmamaktadır.");
            }
            if (ModelState.IsValid)
            {
                //Siparişi veritabanına kayıt et.
                //cart'i sıfırlar.
                var saveOrder = SaveOrder(cart, entity);
                cart.Clear();
                return(View("Completed", saveOrder));
            }
            else
            {
                return(View(entity));
            }
        }
        public void Checkout_Empty_Basket()
        {
            //arrange
            Mock<IOrder> mock = new Mock<IOrder>();

            ShoppingBasket basket = new ShoppingBasket();

            ShippingDetails details = new ShippingDetails();

            ShoppingBasketController controller = new ShoppingBasketController(null, mock.Object);

            //act
            ViewResult result = controller.Checkout(basket, details);

            //assert
            mock.Verify(m => m.ProcessOrder(It.IsAny<ShoppingBasket>(), It.IsAny<ShippingDetails>()),
                Times.Never());

            Assert.AreEqual("", result.ViewName);
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
        public ActionResult CheckOut(ShippingDetails entity)
        {
            var cart = GetCart();

            if (cart.CartLines.Count == 0)
            {
                ModelState.AddModelError("UrunYokError", "Sepetinizde ürün bulunmamaktadır.");
            }
            if (ModelState.IsValid)
            {
                SaveOrder(cart, entity);
                cart.Clear();
                return(View("Completed"));
            }
            else
            {
                return(View(entity));
            }

            return(View(new ShippingDetails()));
        }
Exemple #26
0
        public void Can_Checkout_And_Submit_Order()
        {
            // Arrange
            Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>();
            Cart cart = new Cart();

            cart.AddItem(new Product(), 1);

            ShippingDetails shippingDetails = new ShippingDetails();
            CartController  target          = new CartController(null, mock.Object);

            // Act
            ViewResult result = target.Checkout(cart, shippingDetails);

            // Assert
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(),
                                            It.IsAny <ShippingDetails>()),
                        Times.Once());
            Assert.AreEqual("completed", result.ViewName);
            Assert.AreEqual(true, result.ViewData.ModelState.IsValid);
        }
Exemple #27
0
        public ActionResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Sorry, your cart is empty!");
            }
            if (ModelState.IsValid)
            {
                Session["cart"]            = cart;
                Session["shippingDetails"] = shippingDetails;
                return(RedirectToAction("PaymentWithPaypal", "PaypalPayment"));

                //orderProcessor.ProcessOrder(cart, shippingDetails);
                //cart.clear();
                //return View("Completed");
            }
            else
            {
                return(View(shippingDetails));
            }
        }
        public void Cannot_Checkout_Empty_Cart()
        {
            //A1
            Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>();

            Cart cart = new Cart();

            ShippingDetails shippingDetails = new ShippingDetails();

            CartController target = new CartController(null, mock.Object);

            //A2
            ViewResult result = target.Checkout(cart, shippingDetails);

            //A3
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShippingDetails>()), Times.Never());

            Assert.AreEqual("", result.ViewName);

            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
Exemple #29
0
        public void CheckCorrectSubmit()
        {
            // arrange
            var mockOrderProcessor = new Mock <IOrderProcessor>();
            var cart = new Cart();

            cart.AddItem(new Product(), 1);
            var shippingDetails = new ShippingDetails();
            var cartController  = new CartController()
            {
                OrderProcessor = mockOrderProcessor.Object
            };

            // act
            var result = cartController.Checkout(cart, shippingDetails);

            // assert
            mockOrderProcessor.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShippingDetails>()), Times.Once());
            Assert.AreEqual("Completed", result.ViewName);
            Assert.AreEqual(true, result.ViewData.ModelState.IsValid);
        }
        public ViewResult Checkout(Cart cart, ShippingDetails shippingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Sorry, your cart is empty!");
            }

            if (ModelState.IsValid)
            {
                this.orderProcessor.ProcessOrder(cart, shippingDetails);
                //if we process the order successfully, clear the cart and
                //if (this.orderProcessor.IsDone)
                {
                    cart.Clear();
                    ViewBag.debugData = this.orderProcessor.StatusText;
                    return(View("Completed"));
                }
            }

            return(View(shippingDetails));
        }
Exemple #31
0
        public void Create(ShippingDetails shippingDetails)
        {
            if (shippingDetails.ShippingId == 0)
            {
                _context.ShippingDetails.Add(shippingDetails);
            }
            else
            {
                ShippingDetails dbEntry = _context.ShippingDetails.Find(shippingDetails.ShippingId);
                if (dbEntry != null)
                {
                    dbEntry.Name   = shippingDetails.Name;
                    dbEntry.Email  = shippingDetails.Email;
                    dbEntry.Adress = shippingDetails.Adress;
                    dbEntry.Tel    = shippingDetails.Tel;

                    _context.SaveChanges();
                }
            }
            _context.SaveChanges();
        }
Exemple #32
0
        // affiliate orders only come in one at a time
        public void ProcessAffiliateOrder(Product e, ShippingDetails shippingDetails, string affiliateId)
        {
            var ph = new Purchase
            {
                PurchaseDate    = DateTime.Now.ToString(),
                ShippingDetails = shippingDetails,
                ProductName     = e.Name,
                ProductCount    = 1,
                UserId          = affiliateId,
                Price           = e.Discount > 0 ? Helpers.CalculateDiscount(e.Price, e.Discount) : e.Price,
                ProductId       = e.ProductID,
                AffiliateId     = e.AffiliateId,
            };

            e.Quantity -= 1;
            _pRepository.SaveProduct(e);
            GlobalProductCache.UpdateProduct(e);
            RealTimeSellData.ReplaceOrUpdateTrackedProduct(e, 1);
            GlobalCache.GetCache().ClearCachedItem <ProductModel>(e.ProductID);
            _prRepository.SavePurchase(ph);
        }
        public void ProcessOrder(Cart cart, ShippingDetails shippingInfo)
        {
            using (var smtpClient = new SmtpClient())
            {
                smtpClient.EnableSsl = emailSettings.UseSsl;
                smtpClient.Host = emailSettings.ServerName;
                smtpClient.Port = emailSettings.ServerPort;
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials
                = new NetworkCredential(emailSettings.Username,
                emailSettings.Password);

                if (emailSettings.WriteAsFile)
                {
                    smtpClient.DeliveryMethod
                    = SmtpDeliveryMethod.SpecifiedPickupDirectory;
                    smtpClient.PickupDirectoryLocation = emailSettings.FileLocation;
                    smtpClient.EnableSsl = false;
                }

                StringBuilder body = new StringBuilder()

                .AppendLine("A new order has been submitted")
                .AppendLine("---")
                .AppendLine("Items:");

                foreach (var line in cart.Lines)
                {
                    var subtotal = line.Tour.Price * line.Quantity;
                    body.AppendFormat("{0} x {1} (subtotal: {2:c}", line.Quantity,
                    line.Tour.Name,
                    subtotal);
                }

                body.AppendFormat("Total order value: {0:c}", cart.ComputeTotalValue())
            .AppendLine("---")
            .AppendLine("Ship to:")
            .AppendLine(shippingInfo.Name)
            .AppendLine(shippingInfo.Line1)
            .AppendLine(shippingInfo.Line2 ?? "")
            .AppendLine(shippingInfo.Line3 ?? "")
            .AppendLine(shippingInfo.City)
            .AppendLine(shippingInfo.State ?? "")
            .AppendLine(shippingInfo.Country)
            .AppendLine(shippingInfo.Zip)
            .AppendLine("---")
            .AppendFormat("Gift wrap: {0}", shippingInfo.GiftWrap ? "Yes" : "No");
                MailMessage mailMessage = new MailMessage(
                emailSettings.MailFromAddress, // From
                emailSettings.MailToAddress, // To
                "New order submitted!", // Subject
                body.ToString()); // Body

                if (emailSettings.WriteAsFile)
                {
                    mailMessage.BodyEncoding = Encoding.Unicode;
                }

                smtpClient.Send(mailMessage);
            }
        }
Exemple #34
0
        public void Cannot_Checkout_Empty_Cart()
        {
            // Arrange - create a mock order processor
            Mock<IOrderProcessor> mock = new Mock<IOrderProcessor>();

            // Arrange - create an empty cart
            Cart cart = new Cart();

            // Arrange - create shipping details
            ShippingDetails shippingDetails = new ShippingDetails();

            // Arrange - create an instance of the controller
            CartController target = new CartController(null, mock.Object);

            // Act
            ViewResult result = target.Checkout(cart, shippingDetails);

            // Assert - check that the order hasn't been passed on to the processor
            mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()), Times.Never());

            // Assert - check that the method is returning the default view
            Assert.AreEqual("", result.ViewName);

            // Assert - check that I am passing an invalid model to the view
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }