private void SaveOrder(Cart cart, ShoppingDetails model)  //sipariş kaydetme
        {
            var order = new Order();

            order.OrderNumber = "A" + (new Random()).Next(1111, 9999).ToString();
            order.Total       = cart.Total();
            order.OrderDate   = DateTime.Now;
            order.UserName    = User.Identity.Name;
            order.OrderState  = OrderState.Bekleniyor;
            order.Adres       = model.Adres;
            order.Sehir       = model.Sehir;
            order.Semt        = model.Semt;
            order.Mahalle     = model.Mahalle;
            order.PostaKodu   = model.PostaKodu;
            order.OrderLines  = new List <OrderLine>();
            foreach (var item in cart.Cartlines)
            {
                var orderline = new OrderLine();
                orderline.Quantity  = item.Quantity;
                orderline.Price     = item.Quantity * item.Product.Price;
                orderline.ProductId = item.Product.Id;
                order.OrderLines.Add(orderline);
            }
            db.Orders.Add(order);
            db.SaveChanges();
        }
        public void ProcessOrder(List <ShopCartLineDTO> cart, ShoppingDetailsDTO shoppingDetails, int businessEntityID, string email)
        {
            ShopCartItem    shopCart    = GetCartItem(cart);
            ShoppingDetails shopDetails = GetShoppingDetails(shoppingDetails);

            orderProcessor.ProcessOrder(shopCart, shopDetails, businessEntityID, email);
        }
        private void SaveOrder(Cart cart, ShoppingDetails entity)
        {
            var order = new Order();

            order.OrderNumber  = "A" + (new Random().Next(11111, 99999)).ToString();
            order.Total        = cart.Total();
            order.DateTime     = DateTime.Now;
            order.UserName     = entity.UserName;
            order.AdresBasligi = entity.AdresBasligi;
            order.Adres        = entity.Adres;
            order.Sehir        = entity.Sehir;
            order.Semt         = entity.Semt;
            order.Mahalle      = entity.Mahalle;
            order.PostaKodu    = entity.PostaKodu;
            order.OrderState   = EnumOrderState.Bekleniyor;
            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;
                order.OrderLines.Add(orderline);
            }

            db.Orders.Add(order);
            db.SaveChanges();
        }
예제 #4
0
        public async Task <IActionResult> PutShoppingDetails([FromRoute] int id, [FromBody] ShoppingDetails shoppingDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != shoppingDetails.ShopId)
            {
                return(BadRequest());
            }

            _context.Entry(shoppingDetails).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ShoppingDetailsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #5
0
        public void Cannot_Checkout_Empty_Cart()
        {
            // Организация - создание имитированного обработчика заказов
            Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>();

            // Организация - создание пустой корзины
            Cart cart = new Cart();

            // Организация - создание деталей о доставке
            ShoppingDetails shippingDetails = new ShoppingDetails();

            // Организация - создание контроллера
            CartController controller = new CartController(null, mock.Object);

            // Действие
            ViewResult result = controller.Checkout(cart, shippingDetails);

            // Утверждение — проверка, что заказ не был передан обработчику
            mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShoppingDetails>()),
                        Times.Never());

            // Утверждение — проверка, что метод вернул стандартное представление
            Assert.AreEqual("", result.ViewName);

            // Утверждение - проверка, что-представлению передана неверная модель
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
예제 #6
0
        public ShoppingDetails Get(int businessEntityID)
        {
            ShoppingDetails details = new ShoppingDetails();

            using (var context = new AWContext())
            {
                var result = (from a in context.Address
                              join b in context.BusinessEntityAddress on a.AddressID equals b.AddressID
                              join sp in context.StateProvince on a.StateProvinceID equals sp.StateProvinceID
                              where b.BusinessEntityID == businessEntityID
                              orderby a.AddressID descending
                              select new
                {
                    AddressLine1 = a.AddressLine1,
                    City = a.City,
                    PostalCode = a.PostalCode,
                    CountryRegionCode = sp.CountryRegionCode
                }
                              ).FirstOrDefault();

                if (result != null)
                {
                    details = new ShoppingDetails
                    {
                        Address    = result.AddressLine1,
                        City       = result.City,
                        PostalCode = result.PostalCode,
                        Country    = result.CountryRegionCode
                    }
                }
                ;
            }
            return(details);
        }
        public async Task <ActionResult <ShoppingDetails> > PostShoppingDetails(ShoppingDetails shoppingDetails)
        {
            _context.ShoppingDetails.Add(shoppingDetails);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetShoppingDetails", new { id = shoppingDetails.ShopId }, shoppingDetails));
        }
예제 #8
0
        public ActionResult DeleteConfirmed(int id)
        {
            ShoppingDetails shoppingDetails = db.ShoppingDetails.Find(id);

            db.ShoppingDetails.Remove(shoppingDetails);
            db.SaveChanges();
            return(RedirectToAction("List"));
        }
        public void ProcessOrder(Cart cart, ShoppingDetails 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("Новый заказ обработан")
                                     .AppendLine("---")
                                     .AppendLine("Товары:");

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

                body.AppendFormat("Общая стоимость: {0:c}", cart.ComputeTotalValue())
                .AppendLine("---")
                .AppendLine("Доставка:")
                .AppendLine(shippingInfo.Name)
                .AppendLine(shippingInfo.MainAddress)
                .AppendLine(shippingInfo.SecondAddress ?? "")
                .AppendLine(shippingInfo.ThirdAddress ?? "")
                .AppendLine(shippingInfo.Сity)
                .AppendLine(shippingInfo.Country)
                .AppendLine("---")
                .AppendFormat("Подарочная упаковка: {0}",
                              shippingInfo.Options ? "Да" : "Нет");

                MailMessage mailMessage = new MailMessage(
                    emailSettings.MailFromAddress,                      // От кого
                    emailSettings.MailToAddress,                        // Кому
                    "Новый заказ отправлен!",                           // Тема
                    body.ToString());                                   // Тело письма

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

                smtpClient.Send(mailMessage);
            }
        }
예제 #10
0
 public ActionResult Create(Cart cart, string returnUrl, ShoppingDetails shoppingDetails)
 {
     return(View(new CartCreateViewModel
     {
         Cart = cart,
         ShoppingDetails = shoppingDetails,
         ReturnUrl = returnUrl
     }));
 }
예제 #11
0
        public ActionResult Delete(int id = 0)
        {
            ShoppingDetails shoppingDetails = db.ShoppingDetails.Find(id);

            if (shoppingDetails == null)
            {
                return(HttpNotFound());
            }
            return(View(shoppingDetails));
        }
        private ShoppingDetails GetShoppingDetails(ShoppingDetailsDTO details)
        {
            ShoppingDetails shoppingDetails = new ShoppingDetails {
                Address    = details.Address,
                City       = details.City,
                Country    = details.Country,
                PostalCode = details.PostalCode
            };

            return(shoppingDetails);
        }
예제 #13
0
        public ShoppingDetails DeleteShoppingDetails(int Id)
        {
            ShoppingDetails dbEntry = context.ShoppingDetails.Find(Id);

            if (dbEntry != null)
            {
                context.ShoppingDetails.Remove(dbEntry);
                context.SaveChanges();
            }
            return(dbEntry);
        }
예제 #14
0
 public void ProcessOrder(ShopCartItem cart, ShoppingDetails shoppingDetails, int businessEntityID, string email)
 {
     using (var scope = new TransactionScope())
     {
         InsertAddress(shoppingDetails, businessEntityID);
         int workerID = MinSalesWorker(shoppingDetails.City);
         int orderID  = InsertPurchaseOrderHeader(cart, businessEntityID, shoppingDetails.Country);
         UpdateStatus(orderID, workerID);
         sender.SendMessage(email, "Manager assigned! Check your order page");
         scope.Complete();
     }
 }
예제 #15
0
        public async Task <IActionResult> PostShoppingDetails([FromBody] ShoppingDetails shoppingDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.ShoppingDetails.Add(shoppingDetails);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetShoppingDetails", new { id = shoppingDetails.ShopId }, shoppingDetails));
        }
예제 #16
0
 public void ProcessOrder(Cart cart, ShoppingDetails shoppingDetails)
 {
     using (var smtpClient = new SmtpClient())
     {
         MailMessage mailMessage = new MailMessage(emailSettings.MailFromAddress, emailSettings.MailToAddress, "New Order", "");
         if (emailSettings.WriteAsFile)
         {
             mailMessage.BodyEncoding = Encoding.ASCII;
         }
         //smtpClient.Send(mailMessage);
     }
 }
예제 #17
0
        public void Processor(Cart cart, ShoppingDetails shoppingDetails)
        {
            using (var smptClient = new SmtpClient())
            {
                smptClient.EnableSsl             = emailSettings.UseSsl;
                smptClient.Host                  = emailSettings.ServerName;
                smptClient.Port                  = emailSettings.ServerPort;
                smptClient.UseDefaultCredentials = false;
                smptClient.Credentials           = new NetworkCredential(emailSettings.UserName, emailSettings.Password);

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

                StringBuilder body = new StringBuilder()
                                     .AppendLine("New order was processed")
                                     .AppendLine("-----")
                                     .AppendLine("Stuffs:");

                foreach (var line in cart.Lines)
                {
                    var subtotal = line.Quantity * line.Book.Price;
                }
                body.AppendFormat("All summ:{0:c}", cart.ComputeTotalValue())
                .AppendLine("----")
                .AppendLine("Delivery:")
                .AppendLine(shoppingDetails.Name)
                .AppendLine(shoppingDetails.Line1)
                .AppendLine(shoppingDetails.Line2 ?? "")
                .AppendLine(shoppingDetails.Line3 ?? "")
                .AppendLine(shoppingDetails.City)
                .AppendLine(shoppingDetails.Country)
                .AppendLine("---")
                .AppendFormat("GiftWrap: {0}", shoppingDetails.GiftWrap ? "Yes" : "No");

                MailMessage mailMessage = new MailMessage(
                    emailSettings.MailFromAdress,
                    emailSettings.MailToAdress,
                    "New order was sent",
                    body.ToString());

                if (emailSettings.WriteAsFile)
                {
                    mailMessage.BodyEncoding = Encoding.UTF8;
                }
                smptClient.Send(mailMessage);
            }
        }
예제 #18
0
        public void ProcessOrder(Cart cart, ShoppingDetails shoppingInfo)
        {
            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.Product.Price * line.Quantity;
                    body.AppendFormat("{0}×{1}(subtotal:{2:c}", line.Quantity, line.Product.Name, subtotal);
                }
                body.AppendFormat("Total order value:{0:c}", cart.ComputeTotalValue())
                .AppendLine("---")
                .AppendLine("Ship to:")
                .AppendLine(shoppingInfo.Name)
                .AppendLine(shoppingInfo.line1)
                .AppendLine(shoppingInfo.line2 ?? "")
                .AppendLine(shoppingInfo.line3 ?? "")
                .AppendLine(shoppingInfo.City)
                .AppendLine(shoppingInfo.Country)
                .AppendLine(shoppingInfo.Zip)
                .AppendLine("---")
                .AppendFormat("Gift wrap:{0}", shoppingInfo.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);
            }
        }
예제 #19
0
        public void Cannot_Checkout_Empty_Cart()
        {
            Mock <IOrderProcessor> mock     = new Mock <IOrderProcessor>();
            Cart            cart            = new Cart();
            ShoppingDetails shoppingDetails = new ShoppingDetails();

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

            ViewResult result = controller.Checkout(cart, shoppingDetails);

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

            Assert.AreEqual("", result.ViewName);
            Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
        }
예제 #20
0
        public void ProcessOrder(Cart cart, ShoppingDetails shippingInfo)
        {
            emailSettings.MailToAddress = shippingInfo.Email;
            using (var smtpClient = new SmtpClient())
            {
                smtpClient.EnableSsl             = emailSettings.UseSsl;
                smtpClient.Host                  = emailSettings.ServerName;
                smtpClient.Port                  = emailSettings.ServerPort;
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials           = new System.Net.NetworkCredential(emailSettings.Username, emailSettings.Password);

                StringBuilder body = new StringBuilder()
                                     .AppendLine("Dziękujemy za zakupy!")
                                     .AppendLine("----")
                                     .AppendLine("Kupione produkty: ");
                foreach (var line in cart.Lines)
                {
                    var subtotal = line.Products.Price * line.Quantity;
                    body.AppendFormat("{0} x {1} (Koszt: {2:c})\n",
                                      line.Quantity,
                                      line.Products.Name,
                                      subtotal);
                }

                body.AppendFormat("Zakupy na łączną kwotę: {0:c}", cart.ComputeTotalValue())
                .AppendLine("\n----")
                .AppendLine("Dane: ")
                .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("Zapakowano jako prezent: {0}", shippingInfo.GifWrap ? "Yes" : "No");

                System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(
                    emailSettings.MailFromAddress,
                    emailSettings.MailToAddress,
                    "Zakupiono produkty w Mój Sklep!",
                    body.ToString());

                // gdy próbujemy dużo razy to wkońcu serwer nie pozwala nam się zalogować i wyskakuje błąd
                smtpClient.Send(mailMessage);
            }
        }
예제 #21
0
 public ActionResult Checkout(Cart cart, ShoppingDetails shoppingDetails)
 {
     if (cart.Lines.Count() == 0)
     {
         ModelState.AddModelError("", "对不起,您的购物篮是空的!");
     }
     if (ModelState.IsValid)
     {
         cart.Clear();
         return(View("Completed"));
     }
     else
     {
         return(View(shoppingDetails));
     }
 }
예제 #22
0
        private void InsertAddress(ShoppingDetails shoppingDetails, int businessEntityID)
        {
            ShoppingAddress shoppingAddress = new ShoppingAddress();
            ShoppingDetails details         = shoppingAddress.Get(businessEntityID);

            if (!details.Equals(shoppingDetails))
            {
                using (var context = new AWContext())
                {
                    var customerAddress = new Address()
                    {
                        AddressLine1    = shoppingDetails.Address, City = shoppingDetails.City,
                        StateProvinceID = shoppingAddress.GetStateProvince(shoppingDetails.City, shoppingDetails.Country),
                        PostalCode      = shoppingDetails.PostalCode, ModifiedDate = DateTime.Now,
                        rowguid         = Guid.NewGuid()
                    };
                    if (details.Address != null) //update
                    {
                        var addressID = context.BusinessEntityAddress.SingleOrDefault(x => x.BusinessEntityID == businessEntityID).AddressID;
                        var result    = context.Address.SingleOrDefault(x => x.AddressID == addressID);
                        result.AddressLine1    = customerAddress.AddressLine1;
                        result.City            = customerAddress.City;
                        result.StateProvinceID = customerAddress.StateProvinceID;
                        result.PostalCode      = customerAddress.PostalCode;
                        result.ModifiedDate    = customerAddress.ModifiedDate;
                        result.rowguid         = customerAddress.rowguid;
                        context.SaveChanges();
                    }
                    else // insert
                    {
                        var businessEntity = new BusinessEntityAddress()
                        {
                            BusinessEntityID = businessEntityID,
                            AddressTypeID    = 1,
                            ModifiedDate     = DateTime.Now,
                            rowguid          = Guid.NewGuid()
                        };
                        context.Address.Add(customerAddress);
                        context.SaveChanges();

                        businessEntity.AddressID = customerAddress.AddressID;
                        context.BusinessEntityAddress.Add(businessEntity);
                        context.SaveChanges();
                    }
                }
            }
        }
예제 #23
0
 public ViewResult CheckOut(Cart cart, ShoppingDetails shoppingDetails)
 {
     if (cart.Lines.Count() == 0)
     {
         ModelState.AddModelError("", "Sorry, your cart is empty!");
     }
     if (ModelState.IsValid)
     {
         orderProcessor.ProcessOrder(cart, shoppingDetails);
         cart.Clear();
         return(View("Completed"));
     }
     else
     {
         return(View(shoppingDetails));
     }
 }
예제 #24
0
        public ViewResult Checkout(ShoppingDetails shippingDetails)
        {
            if (GetCart().Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Nic nie wybrałeś");
            }
            if (ModelState.IsValid)
            {
                orderProcessor.ProcessOrder(GetCart(), shippingDetails);
                GetCart().Clear();

                return(View("Completed"));
            }
            else
            {
                return(View(shippingDetails));
            }
        }
예제 #25
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(HttpNotFound());
            }
            // Находим в бд футболиста
            ShoppingDetails shoppingDetails = db.ShoppingDetails.Find(id);

            if (shoppingDetails != null)
            {
                // Создаем список команд для передачи в представление
                SelectList status = new SelectList(db.Status, "Id", "Name", shoppingDetails.StatusId);
                ViewBag.Status = status;
                return(View(shoppingDetails));
            }
            return(RedirectToAction("List"));
        }
예제 #26
0
        public ActionResult CheckOut(ShoppingDetails urun)
        {
            var sepet = GetCart();

            if (sepet.CartLines.Count == 0)
            {
                ModelState.AddModelError("Urun Yok", "Sepetinizde ürün bulunmamaktadır");
            }
            if (ModelState.IsValid)
            {
                // alının ürünlerin veritabanına kaydedilmesi için
                sepet.Clear();
                return(View("View"));
            }
            else
            {
                return(View(urun));
            }
        }
예제 #27
0
        public ActionResult Checkout(ShoppingDetails model)
        {
            var cart = GetCart();

            if (cart.Cartlines.Count == 0)
            {
                ModelState.AddModelError("UrunYok", "Sepetenizde ürün bulunmamaktadır.");
            }
            if (ModelState.IsValid)
            {
                SaveOrder(cart, model);
                cart.Clear();
                return(View("SiparisTamamlandi"));
            }
            else
            {
                return(View(model));
            }
        }
        public ActionResult Checkout(ShoppingDetails entity)
        {
            var cart = GetCart();

            if (cart.CartLines.Count == 0)
            {
                ModelState.AddModelError("", "sepette ürün yok");
            }

            if (ModelState.IsValid)
            {
                //siparişi veritabanına kaydet
                //ve sepeti sil
                SaveOrder(cart, entity);
                cart.Clear();
                return(View("Complated"));
            }
            return(View(entity));
        }
예제 #29
0
        public ViewResult Checkout(Cart cart, ShoppingDetails shoppingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Извините, ваша корзина пуста!");
            }

            if (ModelState.IsValid)
            {
                orderProcessor.ProcessOrder(cart, shoppingDetails);
                cart.Clear();
                return(View("Completed"));
            }

            else
            {
                return(View(shoppingDetails));
            }
        }
예제 #30
0
        public ActionResult Create(Cart cart, ShoppingDetails shoppingDetails)
        {
            if (cart.Lines.Count() == 0)
            {
                ModelState.AddModelError("", "Извините, ваша корзина пуста!");
            }

            if (ModelState.IsValid)
            {
                db.Entry(shoppingDetails).State = EntityState.Added;
                db.SaveChanges();
                orderProcessor.SaveShoppingDetails(cart, shoppingDetails);
                cart.Clear();
                return(View("Completed"));
            }

            else
            {
                return(View(shoppingDetails));
            }
        }