public decimal CalculateFor(Cart.Cart cart)
 {
     return(Math.Round(
                cart.DistinctCategoriesCount * CostPerDelivery
                + cart.LineItemsCount * CostPerProduct
                + FixedCost, 2));
 }
示例#2
0
 public ActionResult Buy(Purchase purchase)
 {
     purchase.Date = DateTime.Now;
     Cart.Cart cart = (Cart.Cart)Session["Cart" + User.Identity.Name];
     if (cart != null && cart.Lines.Count() > 0)
     {
         foreach (var item in cart.Lines)
         {
             purchase.ElectronicId = item.Electronic.Id;
             for (int i = 0; i < item.Quantity; i++)
             {
                 db.Purchases.Add(purchase);
                 db.SaveChanges();
             }
         }
         PurchCartViewModel purchCartViewModel = new PurchCartViewModel {
             Purchase = purchase, Count = cart.Lines.Count()
         };
         cart.Clear();
         return(View("BoughtAll", purchCartViewModel));
     }
     else
     {
         db.Purchases.Add(purchase);
     }
     db.SaveChanges();
     return(RedirectToAction("Bought", purchase));
 }
示例#3
0
        private void Listen()
        {
            try
            {
                AddText(logtxtbx, "Server Listening on: " + ip[0] + "." + ip[1] + "." + ip[2] + "." + ip[3] + "/" + port);
                const int bytesize      = 1000;
                byte[]    buffer        = new byte[bytesize];
                var       senderRequest = listen.AcceptTcpClient();
                senderRequest.GetStream().Read(buffer, 0, bytesize);
                // string decoded = Encoding.ASCII.GetString(buffer,0,bytesize);
                Cart.Cart cartRequest = (Cart.Cart)ByteArrayToObject(buffer);
                string    order       = "Order Number: " + cartRequest.OrderNumber + "\r\nName: " + cartRequest.userName + "\r\n";
                foreach (var item in cartRequest.Items)
                {
                    order += item + "\r\n";
                }

                string quantity = "";
                foreach (var quant in cartRequest.quantity)
                {
                    quantity += quant + "\r\n";
                }

                AddText(logtxtbx, order);
                //AddText(logtxtbx, decoded);
                AddText(logtxtbx, "quantity: " + quantity);
                senderRequest.Close();
                listen.Stop();
            }
            catch (Exception e)
            {
                AddText(logtxtbx, "Listening was interupted: " + e.ToString());
            }
        }
示例#4
0
 public Cart.Cart GetCart()
 {
     Cart.Cart cart = (Cart.Cart)Session["Cart" + User.Identity.Name];
     if (cart == null)
     {
         cart = new Cart.Cart();
         Session["Cart" + User.Identity.Name] = cart;
     }
     return(cart);
 }
        public Campaign FindMostApplicableCampaignTo(Cart.Cart cart)
        {
            var applicableCampaigns = GetApplicableCampaigns(cart);

            var results = SimulateCampaigns(applicableCampaigns, cart);

            var campaigns = SortCampaignsByDiscountAmount(results);

            return(campaigns.FirstOrDefault());
        }
        private static ConcurrentBag <KeyValuePair <Campaign, decimal?> > SimulateCampaigns(
            IList <Campaign> applicableCampaigns, Cart.Cart cart)
        {
            var results = new ConcurrentBag <KeyValuePair <Campaign, decimal?> >();

            Parallel.ForEach(applicableCampaigns, campaign =>
            {
                var discountAmount = campaign.CalculateDiscountAmountFor(cart);
                results.Add(new KeyValuePair <Campaign, decimal?>(campaign, discountAmount));
            });
            return(results);
        }
        public decimal?CalculateDiscountAmountFor(Cart.Cart cart)
        {
            var isApplicable = IsApplicableTo(cart);

            if (!isApplicable)
            {
                return(null);
            }

            var cartAmount = cart.TotalAmountAfterCampaign;

            return(Math.Min(cart.TotalAmountAfterCampaign, CouponDiscountAmountCalculator.Strategies[Type](cartAmount, Rate)));
        }
        public decimal?CalculateDiscountAmountFor(Cart.Cart cart)
        {
            var isApplicable = IsApplicableTo(cart);

            if (!isApplicable)
            {
                return(null);
            }

            var items = GetCampaignApplicableLineItems(cart);

            var sum = items.Sum(i => CampaignDiscountAmountCalculator.Strategies[Type](i, Rate));

            return(Math.Round(sum, 2));
        }
示例#9
0
        public Form1()
        {
            InitializeComponent();
            var myCart = new Cart.Cart();

            myCart.OrderNumber = "12345";
            myCart.userName    = "******";
            myCart.Items       = new List <string>();
            myCart.Items.Add("5.56mm X100");
            myCart.Items.Add("M4 Custom Rifle");
            myCart.quantity = new List <int>();
            myCart.quantity.Add(5);

            cartByte = ObjectToByteArray(myCart);
            // var cartObject = ByteArrayToObject(cartByte);
        }
示例#10
0
 public void Write(Cart.Cart cart)
 {
     Console.WriteLine("------------Invoice---------------");
     foreach (var item in cart.CartItems)
     {
         Console.WriteLine("Price :" + item.Item.Price);
         Console.WriteLine("Category :" + item.Item.Category);
         Console.WriteLine("IsImported :" + item.Item.IsImported);
         Console.WriteLine("Name:" + item.Item.Name);
         Console.WriteLine("Total Cost: " + item.TotalPrice);
         Console.WriteLine("Total Tax: " + item.TotalTax);
         Console.WriteLine("Quantity : " + item.Quantity);
         Console.WriteLine("---------------------------");
     }
     Console.WriteLine("TotalPrice : " + cart.TotalPrice);
     Console.WriteLine("TotalTax : " + cart.TotalTax);
 }
示例#11
0
        public void ProcessOrder(Cart.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);


                StringBuilder body = new StringBuilder()
                                     .AppendLine("A new order has been submitted")
                                     .AppendLine("---")
                                     .AppendLine("Items:");
                foreach (var line in cart.Prods)
                {
                    var subtotal = line.Product.Price * line.Quantity;
                    body.AppendFormat("{0} x {1} (subtotal: {2:c})\n",
                                      line.Quantity,
                                      line.Product.Name,
                                      subtotal);
                }
                body.AppendFormat("Total order value: {0:c}\n",
                                  cart.TotalPrice())
                .AppendLine("---")
                .AppendLine("Ship to:")
                .AppendLine("Name: " + shippingInfo.Name)
                .AppendLine("Country: " + shippingInfo.Country)
                .AppendLine("City: " + shippingInfo.City)
                .AppendLine("Phone number: " + shippingInfo.Phone)
                .AppendLine("Zip code: " + shippingInfo.Zip)
                .AppendLine("---");
                MailMessage mailMessage = new MailMessage(new MailAddress(emailSettings.MailFromAddress).Address,
                                                          new MailAddress(emailSettings.MailToAddress).Address,
                                                          "New order submitted!",
                                                          body.ToString());

                smtpClient.Send(mailMessage);
            }
        }
示例#12
0
        public bool IsApplicableTo(Cart.Cart cart)
        {
            var cartAmount = cart.TotalAmountAfterCampaign;

            return(cartAmount > MinimumCartAmount);
        }
 private List <LineItem> GetCampaignApplicableLineItems(Cart.Cart cart)
 {
     return(cart.LineItems.Where(IsApplicableTo).ToList());
 }
        public bool IsApplicableTo(Cart.Cart cart)
        {
            var items = GetCampaignApplicableLineItems(cart);

            return(DoesCartContainMinimumItemCount(items));
        }
 public CartTests()
 {
     _policyProvider = Substitute.For <PolicyProvider>();
     _taxCalculator  = Substitute.For <TaxCalculator>(_policyProvider);
     _cart           = new Cart.Cart(_taxCalculator);
 }
        private IList <Campaign> GetApplicableCampaigns(Cart.Cart cart)
        {
            var categoryIDs = cart.LineItems.Select(l => l.Product.CategoryID).Distinct().ToList();

            return(campaignReader.GetByCategories(categoryIDs).ToList());
        }