public virtual ActionResult Example() { var list = new List <OrderItemSummary> { new OrderItemSummary { Image = "1", Name = "produkt 1", Price = 15.12m, Quantity = 5, TotalValue = 130m }, new OrderItemSummary { Image = "1", Name = "produkt 1", Price = 15.12m, Quantity = 5, TotalValue = 130m }, new OrderItemSummary { Image = "1", Name = "produkt 1", Price = 15.12m, Quantity = 5, TotalValue = 130m } }; var email = new OrderSumEmail { To = "*****@*****.**", CallbackUrl = Url.Action(MVC.Konto.HistoriaZamowien()), Id = 5, OrderViewModelsSummary = new OrderViewModelsSummary { Firma = false, TotalTotalValue = 150, OrderPayment = new SharedShippingOrderSummaryModels { Description = "Payment opis", Name = "Payment name", Price = 55.21m }, OrderShipping = new SharedShippingOrderSummaryModels { Description = "Shipping Opis", Name = "Shipping name", Price = 55.21m }, UserAddressModel = new CartAddressModel { Imie = "Tomasz", KodPocztowy = "43-200", Miasto = "Pszczyna", NazwaFirmy = "", Nazwisko = "Kamiński", Nip = "", Numer = "12", Telefon = "789252925", Ulica = "Maków" }, OrderViewItemsTotal = new OrderViewItemsTotal { TotalValue = 55.21m, OrderProductList = list } } }; return(new EmailViewResult(email)); }
public virtual async Task <ActionResult> Podsumowanie(OrderViewModelsSummary model, Cart shoppingCart) { if (!shoppingCart.Lines.Any()) { return(RedirectToAction(MVC.Koszyk.Index())); } var user = await _userManager.FindByIdAsync(User.Identity.GetUserId <int>()); int?userId = null; var discount = 0; if (user != null) { userId = user.Id; discount = user.Rabat; } var orders = new Orders(); var orderdetailslist = new List <OrderDetails>(); decimal hehe = 0; decimal discountVal = 0; decimal?orderWeight = 0; var paymentPrice = model.OrderPayment; var shippingPrice = model.OrderShipping; using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { foreach (var item in model.OrderViewItemsTotal.OrderProductList.ToList()) { if (!item.ItemRemoved) { var product = _appRepository.GetSingle <Products>(i => i.ProductId == item.Id); if (product.Quantity - product.ReservedQuantity >= item.Quantity) { var orderD = new OrderDetails { ProductId = item.Id, Quantity = item.Quantity, ProdPrice = item.Price, SubTotalPrice = item.TotalValue }; _dbContext.OrderDetails.Add(orderD); orderdetailslist.Add(orderD); hehe += item.TotalValue; orderWeight += product.Weight * item.Quantity; product.ReservedQuantity += item.Quantity; product.OrdersCount += item.Quantity; _dbContext.Products.AddOrUpdate(product); } else { if (product.Quantity - product.ReservedQuantity <= 0) { item.ItemRemoved = true; model.HasErrors = true; } else if (product.Quantity - product.ReservedQuantity < item.Quantity) { item.QuantityChanged = true; item.OldQuantity = item.Quantity; item.Quantity = (product.Quantity ?? 0) - product.ReservedQuantity; item.TotalValue = item.Price * item.Quantity; var firstOrDefault = shoppingCart.Lines.FirstOrDefault(x => x.Id == item.Id); if (firstOrDefault != null) { firstOrDefault.Quantity = item.Quantity; } model.HasErrors = true; hehe += item.TotalValue; } } } else { model.OrderViewItemsTotal.OrderProductList.Remove(item); } } discountVal = Convert.ToDecimal(hehe * discount / 100); if (model.HasErrors) { model.OrderViewItemsTotal.TotalValue = hehe; model.TotalTotalValue = hehe + (hehe > 250 ? 0 : model.OrderShipping.Price) + (hehe > 250 ? 0 : model.OrderPayment.Price) - discountVal; return(View(model)); } if (model.OrderViewItemsTotal.OrderProductList.Count == 0) { shoppingCart.Clear(); return(RedirectToAction(MVC.Koszyk.Index())); } orders = new Orders { OrderWeight = orderWeight ?? 0, Email = model.UserAddressModel.Email, ProductsPrice = hehe, TotalPrice = (hehe + (hehe > 250 ? 0 : paymentPrice.Price) + (hehe > 250 ? 0 : shippingPrice.Price)) - discountVal, Name = model.UserAddressModel.Imie, Surname = model.UserAddressModel.Nazwisko, OrderDate = DateTime.Today, SentDate = DateTime.Today, ShippingId = model.OrderShipping.Id, PaymentId = model.OrderPayment.Id, City = model.UserAddressModel.Miasto, Street = model.UserAddressModel.Ulica, Number = model.UserAddressModel.Numer, PostalCode = model.UserAddressModel.KodPocztowy, OrderDetails = orderdetailslist, UserId = userId, OrderInfo = (model.OrderPayment.Id == 1 || model.OrderPayment.Id == 3)?"Oczekujące":"Przyjęte", UserHints = model.UserHints, NazwaFirmy = model.UserAddressModel.NazwaFirmy, OrderNip = model.UserAddressModel.Nip, Phone = model.UserAddressModel.Telefon, Discount = discount, FreeShippingPayment = hehe > 250 }; _dbContext.Orders.Add(orders); await _dbContext.SaveChangesAsync(); transaction.Complete(); } catch (Exception ex) { if (ex.GetType() != typeof(UpdateException)) { } } } var email = new OrderSumEmail { To = model.UserAddressModel.Email, CallbackUrl = Url.Action(MVC.Konto.HistoriaZamowien()), Id = orders.OrderId, OrderViewModelsSummary = new OrderViewModelsSummary { Firma = model.UserAddressModel.Nip != null, TotalTotalValue = orders.TotalPrice, Discount = discount, DiscountValue = discountVal.ToString("c"), OrderPayment = new SharedShippingOrderSummaryModels { Description = paymentPrice.Description, Name = paymentPrice.Name, Price = hehe > 250?0:paymentPrice.Price }, OrderShipping = new SharedShippingOrderSummaryModels { Description = shippingPrice.Description, Name = shippingPrice.Name, Price = hehe > 250 ? 0 : shippingPrice.Price }, UserAddressModel = model.UserAddressModel, OrderViewItemsTotal = new OrderViewItemsTotal { TotalValue = hehe, OrderProductList = orderdetailslist.Select(m => new OrderItemSummary { Image = m.Products.IconName ?? "NoPhoto_small", Name = m.Products.Name, Price = m.Products.Price ?? 0, Quantity = m.Quantity, TotalValue = m.SubTotalPrice, Packing = m.Products.Packing }).ToList() } } }; email.Send(); shoppingCart.Clear(); return(View("OrderSubmitted", orders.OrderId)); }