public virtual IEnumerable<ShipmentViewModel> CreateShipmentsViewModel(ICart cart) { foreach (var shipment in cart.GetFirstForm().Shipments) { var shipmentModel = new ShipmentViewModel { ShipmentId = shipment.ShipmentId, CartItems = new List<CartItemViewModel>(), Address = _addressBookService.ConvertToModel(shipment.ShippingAddress), ShippingMethods = CreateShippingMethodViewModels(cart.Market, cart.Currency, shipment) }; shipmentModel.ShippingMethodId = shipment.ShippingMethodId == Guid.Empty ? shipmentModel.ShippingMethods.First().Id : shipment.ShippingMethodId; var variants = _contentLoader.GetItems(shipment.LineItems.Select(x => _referenceConverter.GetContentLink(x.Code)), _preferredCulture).OfType<VariationContent>(); foreach (var lineItem in shipment.LineItems) { var variant = variants.Single(x => x.Code == lineItem.Code); var productLink = variant.GetParentProducts(_relationRepository).FirstOrDefault(); if (ContentReference.IsNullOrEmpty(productLink)) { continue; } shipmentModel.CartItems.Add(_cartItemViewModelFactory.CreateCartItemViewModel(cart, lineItem, variant)); } yield return shipmentModel; } }
public void Execute(ICart cart) { orderProcessor.ProcessOrder( cart.OrderId, wasOk => { if (wasOk) events.RaiseOrderProcessed(cart.OrderId); } ); }
public Intellivision(CoreComm comm, GameInfo game, byte[] rom) { CoreComm = comm; Rom = rom; Game = game; Cart = new Intellicart(); if (Cart.Parse(Rom) == -1) { Cart = new Cartridge(); Cart.Parse(Rom); } Cpu = new CP1610(); Cpu.ReadMemory = ReadMemory; Cpu.WriteMemory = WriteMemory; Cpu.Reset(); Stic = new STIC(); Stic.ReadMemory = ReadMemory; Stic.WriteMemory = WriteMemory; Stic.Reset(); Psg = new PSG(); Psg.ReadMemory = ReadMemory; Psg.WriteMemory = WriteMemory; Connect(); Cpu.LogData(); LoadExecutiveRom(CoreComm.CoreFileProvider.GetFirmwarePath("INTV", "EROM", true, "Executive ROM is required.")); LoadGraphicsRom(CoreComm.CoreFileProvider.GetFirmwarePath("INTV", "GROM", true, "Graphics ROM is required.")); }
public virtual OrderSummaryViewModel CreateOrderSummaryViewModel(ICart cart) { if (cart == null) { return CreateEmptyOrderSummaryViewModel(); } var totals = _orderGroupTotalsCalculator.GetTotals(cart); return new OrderSummaryViewModel { SubTotal = totals.SubTotal, CartTotal = totals.Total, ShippingTotal = totals.ShippingTotal, ShippingSubtotal = cart.GetShippingSubTotal(_shippingCalculator), OrderDiscountTotal = cart.GetOrderDiscountTotal(cart.Currency, _orderGroupCalculator), ShippingDiscountTotal = cart.GetShippingDiscountTotal(_shippingCalculator), ShippingTaxTotal = totals.ShippingTotal + totals.TaxTotal, TaxTotal = totals.TaxTotal, OrderDiscounts = cart.GetFirstForm().Promotions.Where(x => x.DiscountType == DiscountType.Order).Select(x => new OrderDiscountViewModel { Discount = new Money(x.SavedAmount, new Currency(cart.Currency)), DisplayName = x.Description }) }; }
public HomeController(ICategory catsvc,IProduct prodsvc,ICart cartsvc, ICheckout checkoutsvc, ICommon commonsvc) { _categoryService = catsvc; _productService = prodsvc; _cartService = cartsvc; _checkoutService = checkoutsvc; _commonService = commonsvc; }
public PriceCalculator(ICart cart) { this.cart = cart; itemList = new List<ShopItem> { new ShopItem("A99", 50, 3, 130), new ShopItem("B15", 30, 2, 45), new ShopItem("C40", 60), new ShopItem("T34", 99) }; }
public ShipmentViewModelFactoryTests() { _cart = new FakeCart(new MarketImpl(new MarketId(Currency.USD)), Currency.USD) { Name = "Default" }; _cart.Forms.Single().Shipments.Single().LineItems.Add(new InMemoryLineItem { Code = "code"}); _cart.Forms.Single().CouponCodes.Add("couponcode"); var shippingManagerFacadeMock = new Mock<ShippingManagerFacade>(); shippingManagerFacadeMock.Setup(x => x.GetShippingMethodsByMarket(It.IsAny<string>(), It.IsAny<bool>())).Returns(() => new List<ShippingMethodInfoModel> { new ShippingMethodInfoModel { LanguageId = CultureInfo.InvariantCulture.TwoLetterISOLanguageName, Currency = Currency.USD } }); _shippingRate = new ShippingRate(Guid.NewGuid(), "name", new Money(10, Currency.USD)); shippingManagerFacadeMock.Setup(x => x.GetRate(It.IsAny<IShipment>(), It.IsAny<ShippingMethodInfoModel>(), It.IsAny<IMarket>())) .Returns(_shippingRate); var languageServiceMock = new Mock<LanguageService>(null, null, null, null); languageServiceMock.Setup(x => x.GetCurrentLanguage()).Returns(CultureInfo.InvariantCulture); var referenceConverterMock = new Mock<ReferenceConverter>(null,null); var addressBookServiceMock = new Mock<IAddressBookService>(); _addressModel = new AddressModel(); addressBookServiceMock.Setup(x => x.ConvertToModel(It.IsAny<IOrderAddress>())).Returns(_addressModel); _cartItem = new CartItemViewModel (); var cartItemViewModelFactoryMock = new Mock<CartItemViewModelFactory>(null,null,null,null,null,null,null,null,null,null, null); cartItemViewModelFactoryMock.Setup(x => x.CreateCartItemViewModel(It.IsAny<ICart>(), It.IsAny<ILineItem>(), It.IsAny<VariationContent>())).Returns(_cartItem); var contentLoaderMock = new Mock<IContentLoader>(); contentLoaderMock.Setup(x => x.GetItems(It.IsAny<IEnumerable<ContentReference>>(), It.IsAny<CultureInfo>())) .Returns(() => new List<VariationContent> {new VariationContent {Code = "code"} }); var relationRepositoryMock = new Mock<IRelationRepository>(); relationRepositoryMock.Setup(x => x.GetRelationsByTarget<ProductVariation>(It.IsAny<ContentReference>())) .Returns(() => new[] {new ProductVariation {Source = new ContentReference(1)}}); _subject = new ShipmentViewModelFactory( contentLoaderMock.Object, shippingManagerFacadeMock.Object, languageServiceMock.Object, referenceConverterMock.Object, addressBookServiceMock.Object, cartItemViewModelFactoryMock.Object, () => CultureInfo.GetCultureInfo("en"), relationRepositoryMock.Object); }
public virtual CheckoutViewModel CreateCheckoutViewModel(ICart cart, CheckoutPage currentPage, IPaymentMethodViewModel<PaymentMethodBase> paymentViewModel = null) { if (cart == null) { return CreateEmptyCheckoutViewModel(currentPage); } var shipments = _shipmentViewModelFactory.CreateShipmentsViewModel(cart).ToList(); var viewModel = new CheckoutViewModel { CurrentPage = currentPage, Shipments = shipments, BillingAddress = CreateBillingAddressModel(), UseBillingAddressForShipment = shipments.Count == 1 && _addressBookService.UseBillingAddressForShipment(), StartPage = _contentLoader.Get<StartPage>(ContentReference.StartPage), AppliedCouponCodes = cart.GetFirstForm().CouponCodes.Distinct(), AvailableAddresses = new List<AddressModel>(), ReferrerUrl = GetReferrerUrl(), Payment = paymentViewModel, }; UpdatePayment(viewModel); var availableAddresses = GetAvailableAddresses(); if (availableAddresses.Any()) { viewModel.AvailableAddresses.Add(new AddressModel { Name = _localizationService.GetString("/Checkout/MultiShipment/SelectAddress") }); foreach (var address in availableAddresses) { viewModel.AvailableAddresses.Add(address); } } else { viewModel.AvailableAddresses.Add(new AddressModel { Name = _localizationService.GetString("/Checkout/MultiShipment/NoAddressFound") }); } SetDefaultShipmentAddress(viewModel); _addressBookService.LoadAddress(viewModel.BillingAddress); PopulateCountryAndRegions(viewModel); return viewModel; }
public virtual MultiShipmentViewModel CreateMultiShipmentViewModel(ICart cart, bool isAuthenticated) { var viewModel = new MultiShipmentViewModel { StartPage = _contentLoader.Get<StartPage>(ContentReference.StartPage), AvailableAddresses = GetAvailableShippingAddresses(), CartItems = cart != null ? FlattenCartItems(_shipmentViewModelFactory.CreateShipmentsViewModel(cart).SelectMany(x => x.CartItems)) : new CartItemViewModel[0], ReferrerUrl = GetReferrerUrl() }; if (!isAuthenticated) { UpdateShippingAddressesForAnonymous(viewModel); } return viewModel; }
public MultiShipmentViewModelFactoryTests() { _cart = new FakeCart(new MarketImpl(new MarketId(Currency.USD)), Currency.USD); _cart.Forms.Single().Shipments.Single().LineItems.Add(new InMemoryLineItem ()); _cart.Forms.Single().CouponCodes.Add("couponcode"); var addressBookServiceMock = new Mock<IAddressBookService>(); addressBookServiceMock.Setup(x => x.List()).Returns(() => new List<AddressModel> { new AddressModel { AddressId = "addressid" } }); var preferredBillingAddress = CustomerAddress.CreateInstance(); preferredBillingAddress.Name = "preferredBillingAddress"; addressBookServiceMock.Setup(x => x.GetPreferredBillingAddress()).Returns(preferredBillingAddress); addressBookServiceMock.Setup(x => x.UseBillingAddressForShipment()).Returns(true); _startPage = new StartPage(); var contentLoaderMock = new Mock<IContentLoader>(); contentLoaderMock.Setup(x => x.Get<StartPage>(It.IsAny<PageReference>())).Returns(_startPage); var urlResolverMock = new Mock<UrlResolver>(); var httpcontextMock = new Mock<HttpContextBase>(); var requestMock = new Mock<HttpRequestBase>(); requestMock.Setup(x => x.Url).Returns(new Uri("http://site.com")); requestMock.Setup(x => x.UrlReferrer).Returns(new Uri("http://site.com")); httpcontextMock.Setup(x => x.Request).Returns(requestMock.Object); PreferredCultureAccessor accessor = () => CultureInfo.InvariantCulture; var shipmentViewModelFactoryMock = new Mock<ShipmentViewModelFactory>(null, null, null, null, null, null, accessor, null); shipmentViewModelFactoryMock.Setup(x => x.CreateShipmentsViewModel(It.IsAny<ICart>())).Returns(() => new[] { new ShipmentViewModel {CartItems = new[] { new CartItemViewModel { Quantity = 1 } } } }); _subject = new MultiShipmentViewModelFactory( new MemoryLocalizationService(), addressBookServiceMock.Object, contentLoaderMock.Object, urlResolverMock.Object, (() => httpcontextMock.Object), shipmentViewModelFactoryMock.Object); }
/// <summary> /// Validates and completes a cart. /// </summary> /// <param name="cart">The cart.</param> /// <param name="errorMessages">The error messages.</param> private bool DoCompletingCart(ICart cart, IList <string> errorMessages) { var isSuccess = true; if (_featureSwitch.IsSerializedCartsEnabled()) { var validationIssues = new Dictionary <ILineItem, IList <ValidationIssue> >(); cart.AdjustInventoryOrRemoveLineItems((item, issue) => AddValidationIssues(validationIssues, item, issue), _inventoryProcessor); isSuccess = !validationIssues.Any(); foreach (var issue in validationIssues.Values.SelectMany(x => x).Distinct()) { if (issue == ValidationIssue.RejectedInventoryRequestDueToInsufficientQuantity) { errorMessages.Add(Utilities.Translate("NotEnoughStockWarning")); } else { errorMessages.Add(Utilities.Translate("CartValidationWarning")); } } return(isSuccess); } // Execute CheckOutWorkflow with parameter to ignore running process payment activity again. var isIgnoreProcessPayment = new Dictionary <string, object> { { "PreventProcessPayment", true } }; var workflowResults = OrderGroupWorkflowManager.RunWorkflow((OrderGroup)cart, OrderGroupWorkflowManager.CartCheckOutWorkflowName, true, isIgnoreProcessPayment); var warnings = workflowResults.OutputParameters["Warnings"] as StringDictionary; isSuccess = warnings.Count == 0; foreach (string message in warnings.Values) { errorMessages.Add(message); } return(isSuccess); }
private void UpdateLineItemSku(ICart cart, int shipmentId, string oldCode, string newCode, decimal quantity, string displayName) { RemoveLineItem(cart, shipmentId, oldCode); //merge same sku's var newLineItem = GetFirstLineItem(cart, newCode); if (newLineItem != null) { var shipment = cart.GetFirstForm().Shipments.First(s => s.ShipmentId == shipmentId || shipmentId == 0); cart.UpdateLineItemQuantity(shipment, newLineItem, newLineItem.Quantity + quantity); } else { AddNewLineItem(cart, newCode, quantity, displayName); } ValidateCart(cart); }
public void ChangeCartItem(ICart cart, int shipmentId, string code, decimal quantity, string size, string newSize, string displayName) { if (quantity > 0) { if (size == newSize) { ChangeQuantity(cart, shipmentId, code, quantity); } else { var newCode = _productService.GetSiblingVariantCodeBySize(code, newSize); UpdateLineItemSku(cart, shipmentId, code, newCode, quantity, displayName); } } else { RemoveLineItem(cart, shipmentId, code); } }
public void WhenSkuIsNotInPricelistThenAddRaisesException() { var testContext = new TestContext(); ICart cart = testContext.CartFactory.Create(); decimal registeredSkuPrice = 100; var registeredSku = testContext.CreateNewSku("A", registeredSkuPrice); cart.Add(registeredSku); Assert.Equal(registeredSkuPrice, cart.Total); var unregisteredSku = new Sku("U"); Assert.Throws <StandardCart.SkuNotFoundInPriceListException>(() => { cart.Add(unregisteredSku); // Adding SKU but no price registered in pricelist }); }
public virtual WishListViewModel CreateWishListViewModel(ICart cart) { if (cart == null) { return(new WishListViewModel { ItemCount = 0, CartItems = new CartItemViewModel[0], Total = new Money(0, _currencyService.GetCurrentCurrency()) }); } return(new WishListViewModel { ItemCount = GetLineItemsTotalQuantity(cart), CartItems = _shipmentViewModelFactory.CreateShipmentsViewModel(cart).SelectMany(x => x.CartItems), Total = _orderGroupCalculator.GetSubTotal(cart) }); }
public virtual WishListViewModel CreateWishListViewModel(ICart cart) { if (cart == null) { return(new WishListViewModel { ItemCount = 0, CartItems = new CartItemViewModel[0], Total = _pricingService.GetMoney(0) }); } return(new WishListViewModel { ItemCount = GetCartLineItems(cart).Count(), CartItems = _shipmentViewModelFactory.CreateShipmentsViewModel(cart).SelectMany(x => x.CartItems), Total = _orderGroupCalculator.GetSubTotal(cart) }); }
public ActionResult Reorder(int orderGroupId = 0) { var purchaseOrder = OrderContext.Current.GetPurchaseOrderById(orderGroupId); var form = purchaseOrder.GetFirstForm(); var list = form.GetAllLineItems(); string warningMessage = string.Empty; ICart Cart = _cartService.LoadOrCreateCart(_cartService.DefaultCartName); foreach (var item in list) { Cart.AddLineItem(item); } var order = _orderRepository.Save(Cart); return(Json(new { result = true })); }
private static void EnsureShipping(ICart cart, DetailsResponse details) { var shipment = cart.GetFirstShipment(); if (shipment.ShippingMethodId == default(Guid)) { if (details?.ShippingDetails?.ShippingMethodId != null) { shipment.ShippingMethodId = new Guid(details.ShippingDetails.ShippingMethodId); } } if (shipment.ShippingAddress == null) { shipment.ShippingAddress = AddressHelper.UserDetailsAndShippingDetailsToOrderAddress(details?.UserDetails, details?.ShippingDetails, cart); } }
public void ChangeCartItem(ICart cart, int shipmentId, string code, decimal quantity, string size, string newSize) { if (quantity > 0) { if (size == newSize) { ChangeQuantity(cart, shipmentId, code, quantity); } else { var newCode = _productService.GetSiblingVariantCodeBySize(code, newSize); UpdateLineItemSku(cart, shipmentId, code, newCode, quantity); } } else { RemoveLineItem(cart, shipmentId, code); } }
private void RemoveLineItem(ICart cart, int shipmentId, string code) { //gets the shipment for shipment id or for wish list shipment id as a parameter is always equal zero( wish list). var shipment = cart.GetFirstForm().Shipments.First(s => s.ShipmentId == shipmentId || shipmentId == 0); var lineItem = shipment.LineItems.FirstOrDefault(l => l.Code == code); if (lineItem != null) { shipment.LineItems.Remove(lineItem); } if (!shipment.LineItems.Any()) { cart.GetFirstForm().Shipments.Remove(shipment); } ValidateCart(cart); }
/// <summary> /// Prints the cart for invoicing purposes. /// </summary> /// <param name="cart">The <see cref="ICart"/> to print.</param> /// <returns>A <see cref="string"/>.</returns> public static string PrintCart(this ICart cart) { string n = Environment.NewLine; string nn = $"{n}{n}"; string output = string.Empty; output += $"Cart info ({cart.Quantity} SKU){n}"; output += $"==={nn}"; foreach (var item in cart) { output += $"- {item.ToString()} => {item.Price}{n}"; } output += $"---{n}"; output += $"Total: {cart.Total}{n}"; return(output); }
public OrderViewModel(IUnitOfWork unitOfWork, ICart cart) { this.unitOfWork = unitOfWork; cartItems = cart.GetCartItems(); var products = unitOfWork.Repository <Product>().Query().AsNoTracking().Where(p => cartItems.Any(c => c.ProductId == p.Id)).ToList(); Items = new List <OrderItem>(); foreach (var cartItem in cartItems) { var product = products.FirstOrDefault(p => p.Id == cartItem.ProductId); Items.Add(new OrderItem() { Id = product.Id, ProductName = product.Name, Description = product.Description, Count = cartItem.Count }); } }
public CheckoutOrderData UpdateOrder(string orderId, ICart cart) { var client = GetClient(cart.Market); var checkout = client.NewCheckoutOrder(orderId); var orderData = GetCheckoutOrderData(cart, PaymentMethodDto); var checkoutConfiguration = GetCheckoutConfiguration(cart.Market); try { if (ServiceLocator.Current.TryGetExistingInstance(out ICheckoutOrderDataBuilder checkoutOrderDataBuilder)) { checkoutOrderDataBuilder.Build(orderData, cart, checkoutConfiguration); } orderData = checkout.Update(orderData); cart = UpdateCartWithOrderData(cart, orderData); return(orderData); } catch (ApiException ex) { // Create new session if current one is not found if (ex.StatusCode == HttpStatusCode.NotFound) { return(CreateOrder(cart)); } _logger.Error($"{ex.ErrorMessage.CorrelationId} {ex.ErrorMessage.ErrorCode} {string.Join(", ", ex.ErrorMessage.ErrorMessages)}", ex); throw; } catch (WebException ex) { if ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { return(CreateOrder(cart)); } _logger.Error(ex.Message, ex); throw; } }
public ActionResult Reorder(int orderGroupId = 0) { var purchaseOrder = OrderContext.Current.Get <PurchaseOrder>(orderGroupId); var form = purchaseOrder.GetFirstForm(); var list = form.GetAllLineItems(); string warningMessage = string.Empty; ICart Cart = _cartService.LoadOrCreateCart(_cartService.DefaultCartName); foreach (var item in list) { Cart.AddLineItem(item); } var order = _orderRepository.Save(Cart); return(Redirect(Url.ContentUrl(_contentLoader.Get <CommerceHomePage>(ContentReference.StartPage).CheckoutPage))); }
public Dictionary <ILineItem, IList <ValidationIssue> > ValidateCartItems(ICart cart) { var validationIssues = new Dictionary <ILineItem, IList <ValidationIssue> >(); cart.ValidateOrRemoveLineItems( (item, issue) => validationIssues.Add(item, new[] { issue }), _lineItemValidator); cart.UpdatePlacedPriceOrRemoveLineItems( _customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.Add(item, new[] { issue }), _placedPriceProcessor); cart.UpdateInventoryOrRemoveLineItems( (item, issue) => validationIssues.Add(item, new[] { issue }), _inventoryProcessor); return(validationIssues); }
public virtual void CreateAndAddPaymentToCart(ICart cart, CheckoutViewModel viewModel) { // Clean up payments in cart on payment provider site. foreach (var form in cart.Forms) { form.Payments.Clear(); } var total = cart.GetTotal(_orderGroupCalculator); var payment = viewModel.Payment.CreatePayment(total.Amount, cart); if (payment.PaymentMethodName.Equals(Klarna.Payments.Constants.KlarnaPaymentSystemKeyword)) { payment.Properties[Klarna.Payments.Constants.AuthorizationTokenPaymentField] = viewModel.AuthorizationToken; } cart.AddPayment(payment, _orderGroupFactory); payment.BillingAddress = _addressBookService.ConvertToAddress(viewModel.BillingAddress, cart); }
public Dictionary <ILineItem, List <ValidationIssue> > ChangeQuantity(ICart cart, int shipmentId, string code, decimal quantity) { if (quantity == 0) { return(RemoveLineItem(cart, shipmentId, code)); } else { var shipment = cart.GetFirstForm().Shipments.First(s => s.ShipmentId == shipmentId || shipmentId == 0); var lineItem = shipment.LineItems.FirstOrDefault(x => x.Code == code); if (lineItem == null) { throw new InvalidOperationException($"No lineitem with matching code '{code}' for shipment id {shipmentId}"); } cart.UpdateLineItemQuantity(shipment, lineItem, quantity); } return(ValidateCart(cart)); }
public virtual WishListViewModel CreateWishListViewModel(ICart cart) { if (cart == null) { return new WishListViewModel { ItemCount = 0, CartItems = new CartItemViewModel[0], Total = new Money(0, _currencyService.GetCurrentCurrency()) }; } return new WishListViewModel { ItemCount = GetLineItemsTotalQuantity(cart), CartItems = _shipmentViewModelFactory.CreateShipmentsViewModel(cart).SelectMany(x => x.CartItems), Total = _orderGroupCalculator.GetSubTotal(cart) }; }
public ActionResult Import(QuickOrderProductViewModel[] ProductsList) { var returnedMessages = new List <string>(); ModelState.Clear(); if (Cart == null) { _cart = _cartService.LoadOrCreateCart(_cartService.DefaultCartName); } foreach (var product in ProductsList) { if (!product.ProductName.Equals("removed")) { var variationReference = _referenceConverter.GetContentLink(product.Sku); var currentQuantity = GetCurrentItemQuantity(product.Sku); product.Quantity += (int)currentQuantity; var responseMessage = _quickOrderService.ValidateProduct(variationReference, Convert.ToDecimal(product.Quantity), product.Sku); if (responseMessage.IsNullOrEmpty()) { var result = _cartService.AddToCart(Cart, product.Sku, 1, "delivery", ""); if (!result.EntriesAddedToCart) { continue; } _cartService.ChangeCartItem(Cart, 0, product.Sku, product.Quantity, "", ""); _orderRepository.Save(Cart); } else { returnedMessages.Add(responseMessage); } } } if (returnedMessages.Count == 0) { returnedMessages.Add("All items were added to cart."); } TempData["messages"] = returnedMessages; return(Json(new { Message = returnedMessages, TotalItem = Cart.GetAllLineItems().Sum(x => x.Quantity) })); }
private static void AddNewLineItem(ICart cart, string newCode, decimal quantity, string displayName) { var newLineItem = cart.CreateLineItem(newCode); newLineItem.Quantity = quantity; newLineItem.DisplayName = displayName; cart.AddLineItem(newLineItem); var price = _priceService.Service.GetPrices(cart.MarketId, DateTime.Now, new CatalogKey(newCode), new PriceFilter { Currencies = new[] { cart.Currency } }) .OrderBy(x => x.UnitPrice.Amount).FirstOrDefault(); if (price != null) { newLineItem.PlacedPrice = price.UnitPrice.Amount; } }
#pragma warning restore 649 public static PatchedOrderLine GetOrderLine(this IShipment shipment, ICart cart, OrderGroupTotals totals, bool includeTaxes) { var total = AmountHelper.GetAmount(totals.ShippingTotal); var totalTaxAmount = 0; var taxRate = 0; if (includeTaxes) { var market = _marketService.Service.GetMarket(cart.MarketId); var shippingTaxTotal = _shippingCalculator.Service.GetShippingTax(shipment, market, cart.Currency); if (shippingTaxTotal.Amount > 0) { totalTaxAmount = AmountHelper.GetAmount(shippingTaxTotal.Amount); taxRate = AmountHelper.GetAmount((shippingTaxTotal.Amount / totals.ShippingTotal.Amount) * 100); total = total + totalTaxAmount; } } var shipmentOrderLine = new PatchedOrderLine { Name = shipment.ShippingMethodName, Quantity = 1, UnitPrice = total, TotalAmount = total, TaxRate = taxRate, TotalTaxAmount = totalTaxAmount, Type = "shipping_fee" }; if (string.IsNullOrEmpty(shipmentOrderLine.Name)) { var shipmentMethod = Mediachase.Commerce.Orders.Managers.ShippingManager.GetShippingMethod(shipment.ShippingMethodId) .ShippingMethod.FirstOrDefault(); if (shipmentMethod != null) { shipmentOrderLine.Name = shipmentMethod.DisplayName; } } return(shipmentOrderLine); }
public ActionResult Import(ProductViewModel[] ProductsList) { var returnedMessages = new List <string>(); ModelState.Clear(); if (Cart == null) { _cart = _cartService.LoadOrCreateCart(_cartService.DefaultCartName); } foreach (var product in ProductsList) { if (!product.ProductName.Equals("removed")) { ContentReference variationReference = _referenceConverter.GetContentLink(product.Sku); var responseMessage = _quickOrderService.ValidateProduct(variationReference, Convert.ToDecimal(product.Quantity), product.Sku); if (responseMessage.IsNullOrEmpty()) { string warningMessage; if (_cartService.AddToCart(Cart, product.Sku, out warningMessage)) { _cartService.ChangeCartItem(Cart, 0, product.Sku, product.Quantity, "", ""); _orderRepository.Save(Cart); } } else { returnedMessages.Add(responseMessage); } } } if (returnedMessages.Count == 0) { returnedMessages.Add("All items were added to cart."); } TempData["messages"] = returnedMessages; var quickOrderPage = GetQuickOrderPage(); return(Redirect(quickOrderPage?.LinkURL ?? Request.UrlReferrer.AbsoluteUri)); }
public CartViewModelFactoryTests() { _cart = new FakeCart(new MarketImpl(MarketId.Default), Currency.USD); _cart.Forms.Single().Shipments.Single().LineItems.Add(new InMemoryLineItem { Quantity = 1, PlacedPrice = 105, LineItemDiscountAmount = 5}); _startPage = new StartPage() { CheckoutPage = new ContentReference(1), WishListPage = new ContentReference(1) }; var contentLoaderMock = new Mock<IContentLoader>(); contentLoaderMock.Setup(x => x.Get<StartPage>(It.IsAny<ContentReference>())).Returns(_startPage); PreferredCultureAccessor accessor = () => CultureInfo.InvariantCulture; var shipmentViewModelFactoryMock = new Mock<ShipmentViewModelFactory>(null,null,null,null,null,null,accessor,null); _cartItems = new List<CartItemViewModel> {new CartItemViewModel {DiscountedPrice = new Money(100, Currency.USD), Quantity = 1} }; shipmentViewModelFactoryMock.Setup(x => x.CreateShipmentsViewModel(It.IsAny<ICart>())).Returns(() => new[] { new ShipmentViewModel {CartItems = _cartItems} }); var currencyServiceMock = new Mock<ICurrencyService>(); currencyServiceMock.Setup(x => x.GetCurrentCurrency()).Returns(Currency.USD); _totals = new OrderGroupTotals( new Money(100, Currency.USD), new Money(100, Currency.USD), new Money(100, Currency.USD), new Money(100, Currency.USD), new Money(100, Currency.USD), new Dictionary<IOrderForm, OrderFormTotals>()); var orderGroupTotalsCalculatorMock = new Mock<IOrderGroupTotalsCalculator>(); orderGroupTotalsCalculatorMock.Setup(x => x.GetTotals(It.IsAny<ICart>())).Returns(_totals); _orderDiscountTotal = new Money(5, Currency.USD); var orderGroupCalculatorMock = new Mock<IOrderGroupCalculator>(); orderGroupCalculatorMock.Setup(x => x.GetOrderDiscountTotal(It.IsAny<IOrderGroup>(), It.IsAny<Currency>())) .Returns(_orderDiscountTotal); orderGroupCalculatorMock.Setup(x => x.GetSubTotal(_cart)).Returns(new Money(_cart.GetAllLineItems().Sum(x => x.PlacedPrice * x.Quantity - ((ILineItemDiscountAmount)x).EntryAmount), _cart.Currency)); _subject = new CartViewModelFactory( contentLoaderMock.Object, currencyServiceMock.Object, orderGroupTotalsCalculatorMock.Object, orderGroupCalculatorMock.Object, shipmentViewModelFactoryMock.Object); }
public ActionResult Index(ICart cart) { var orderItems = cart.GetOrderItems(); var orderItemVMList = new List <OrderItemVM>(); foreach (var orderItemDTO in orderItems) { OrderItemVM buff = new OrderItemVM(); buff.PurposeId = orderItemDTO.PurposeId; buff.ItemId = orderItemDTO.ItemId; buff.BrandName = orderItemDTO.BrandName; buff.ItemName = orderItemDTO.ItemName; buff.IsPromo = orderItemDTO.IsPromo; buff.Count = orderItemDTO.Count; buff.Price = orderItemDTO.Price; buff.Currency = orderItemDTO.Currency; orderItemVMList.Add(buff); } return(View(orderItemVMList)); }
public virtual MiniCartViewModel CreateMiniCartViewModel(ICart cart) { if (cart == null) { return new MiniCartViewModel { ItemCount = 0, CheckoutPage = _contentLoader.Get<StartPage>(ContentReference.StartPage).CheckoutPage, Shipments = Enumerable.Empty<ShipmentViewModel>(), Total = new Money(0, _currencyService.GetCurrentCurrency()) }; } return new MiniCartViewModel { ItemCount = GetLineItemsTotalQuantity(cart), CheckoutPage = _contentLoader.Get<StartPage>(ContentReference.StartPage).CheckoutPage, Shipments = _shipmentViewModelFactory.CreateShipmentsViewModel(cart), Total = _orderGroupCalculator.GetSubTotal(cart) }; }
public static void AddToCart(ICart cart, string code, decimal quantity) { var contentLink = _referenceConverter.Service.GetContentLink(code); var entryContent = _contentLoader.Service.Get <EntryContentBase>(contentLink); if (entryContent is BundleContent) { foreach (var relation in _relationRepository.Service.GetChildren <BundleEntry>(contentLink)) { var entry = _contentLoader.Service.Get <EntryContentBase>(relation.Child); AddToCart(cart, entry.Code, relation.Quantity ?? 1); } return; } var lineItem = cart.CreateLineItem(code); lineItem.Quantity = quantity; AddNewLineItem(cart, lineItem.Code, quantity, entryContent.DisplayName); }
private PatchedMerchantUrls GetMerchantUrls(ICart cart) { if (PaymentMethodDto != null) { var configuration = GetConfiguration(cart.Market); return(new PatchedMerchantUrls { Terms = new Uri(configuration.TermsUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())), CancellationTerms = !string.IsNullOrEmpty(configuration.CancellationTermsUrl) ? new Uri(configuration.CancellationTermsUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())) : null, Checkout = new Uri(configuration.CheckoutUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())), Confirmation = new Uri(configuration.ConfirmationUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())), Push = new Uri(configuration.PushUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())), AddressUpdate = new Uri(configuration.AddressUpdateUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())), ShippingOptionUpdate = new Uri(configuration.ShippingOptionUpdateUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())), Notification = new Uri(configuration.NotificationUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())), Validation = new Uri(configuration.OrderValidationUrl.Replace("{orderGroupId}", cart.OrderLink.OrderGroupId.ToString())) }); } return(null); }
public bool AddCouponCode(ICart cart, string couponCode) { var couponCodes = cart.GetFirstForm().CouponCodes; if (couponCodes.Any(c => c.Equals(couponCode, StringComparison.OrdinalIgnoreCase))) { return(false); } couponCodes.Add(couponCode); var rewardDescriptions = cart.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings()); var appliedCoupons = rewardDescriptions.Where(r => r.Status == FulfillmentStatus.Fulfilled && !string.IsNullOrEmpty(r.Promotion.Coupon.Code)) .Select(c => c.Promotion.Coupon.Code); var couponApplied = appliedCoupons.Any(c => c.Equals(couponCode, StringComparison.OrdinalIgnoreCase)); if (!couponApplied) { couponCodes.Remove(couponCode); } return(couponApplied); }
public ITaxResult CalculateTaxFromCartItems(ICart CartObj, IAddress AddressObj, IUserProfile UserProfile) { try { ISecurity Security = new Security(UserProfile); if (Security.AuthenticateUser() == true) { double PreTaxAmount = CalculateCartPrice(CartObj); DataSet TaxResultFromDB = new TaxManagementDataLayer().GetTaxDetailsFromDB(AddressObj.GetAddressID()); double FinalAmount = PreTaxAmount + CalculateCartTax(PreTaxAmount, TaxResultFromDB); return(new TaxResult(true, TaxResultFromDB.Tables[0].Rows[0]["tax_type"].ToString(), double.Parse(TaxResultFromDB.Tables[0].Rows[0]["tax"].ToString()), CalculateCartTax(PreTaxAmount, TaxResultFromDB), FinalAmount, PreTaxAmount)); } return(new TaxResult(false)); } catch (Exception ex) { Logger.Instance().Log(Fatal.Instance(), ex); throw ex; } }
public void TidyUpShipments(ICart cart) { // only first form now, change this... like for Payments Dictionary <int, IShipment> _shippingDict = new Dictionary <int, IShipment>(); foreach (var item in cart.GetFirstForm().Shipments)//ch.Cart.OrderAddresses) { // auto-added shipment should remain in the cart if (item.ShippingMethodId != new Guid()) // ...pick those "other shipments", reset done above { // cannot remove in here, adding to Dict for later remove _shippingDict.Add(item.ShipmentId, item); } } foreach (var item in _shippingDict.Values) { cart.GetFirstForm().Shipments.Remove(item); } }
// Generic one public bool CheckOnLineItems(ICart cart) { // need to set it to something var lineItems = cart.GetAllLineItems(); //bool theBool = false; foreach (var item in lineItems) { if ((bool)item.Properties["LineItemSpecialShipping"] == true) { cart.Properties["SpecialShip"] = true; } else { cart.Properties["SpecialShip"] = false; } } return((bool)cart.Properties["SpecialShip"]); }
private static void EnsureShipping(ICart cart, IVippsUserDetails details) { var shipment = cart.GetFirstShipment(); if (details?.ShippingDetails?.ShippingMethodId != null && (shipment.ShippingMethodId == default(Guid) || shipment.ShippingMethodId.ToString() != details.ShippingDetails.ShippingMethodId)) { if (details?.ShippingDetails?.ShippingMethodId != null) { shipment.ShippingMethodId = new Guid(details.ShippingDetails.ShippingMethodId); } } if (details?.ShippingDetails != null && details.UserDetails != null) { shipment.ShippingAddress = AddressHelper.UserDetailsAndShippingDetailsToOrderAddress(details.UserDetails, details.ShippingDetails, cart); } }
public bool AddCouponCode(ICart cart, string couponCode) { var couponCodes = cart.GetFirstForm().CouponCodes; if (couponCodes.Any(c => c.Equals(couponCode, StringComparison.OrdinalIgnoreCase))) { return false; } couponCodes.Add(couponCode); var rewardDescriptions = ApplyDiscounts(cart); var appliedCoupons = rewardDescriptions .Where(r => r.AppliedCoupon != null) .Select(r => r.AppliedCoupon); var couponApplied = appliedCoupons.Any(c => c.Equals(couponCode, StringComparison.OrdinalIgnoreCase)); if (!couponApplied) { couponCodes.Remove(couponCode); } return couponApplied; }
public virtual MiniCartViewModel CreateMiniCartViewModel(ICart cart) { if (cart == null) { return(new MiniCartViewModel { ItemCount = 0, CheckoutPage = _contentLoader.Get <StartPage>(ContentReference.StartPage).CheckoutPage, Shipments = Enumerable.Empty <ShipmentViewModel>(), Total = new Money(0, _currencyService.GetCurrentCurrency()) }); } return(new MiniCartViewModel { ItemCount = GetLineItemsTotalQuantity(cart), CheckoutPage = _contentLoader.Get <StartPage>(ContentReference.StartPage).CheckoutPage, Shipments = _shipmentViewModelFactory.CreateShipmentsViewModel(cart), Total = _orderGroupCalculator.GetSubTotal(cart) + _orderGroupCalculator.GetOrderDiscountTotal(cart, cart.Currency) }); }
public virtual LargeCartViewModel CreateLargeCartViewModel(ICart cart) { if (cart == null) { var zeroAmount = new Money(0, _currencyService.GetCurrentCurrency()); return new LargeCartViewModel { Shipments = Enumerable.Empty<ShipmentViewModel>(), TotalDiscount = zeroAmount, Total = zeroAmount }; } return new LargeCartViewModel { Shipments = _shipmentViewModelFactory.CreateShipmentsViewModel(cart), TotalDiscount = new Money(cart.GetAllLineItems().Sum(x => x.GetEntryDiscount()), cart.Currency), Total = _orderGroupCalculator.GetSubTotal(cart) }; }
public virtual CartItemViewModel CreateCartItemViewModel(ICart cart, ILineItem lineItem, VariationContent variant) { var productLink = variant.GetParentProducts(_relationRepository).FirstOrDefault(); var product = _contentLoader.Get<ProductContent>(productLink) as FashionProduct; return new CartItemViewModel { Code = lineItem.Code, DisplayName = variant.DisplayName, ImageUrl = variant.GetAssets<IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? "", DiscountedPrice = GetDiscountedPrice(cart, lineItem), PlacedPrice = new Money(lineItem.PlacedPrice, _currencyService.GetCurrentCurrency()), Quantity = lineItem.Quantity, Url = lineItem.GetUrl(), Variant = variant, IsAvailable = _pricingService.GetCurrentPrice(variant.Code).HasValue, Brand = GetBrand(product), AvailableSizes = GetAvailableSizes(product, variant), DiscountedUnitPrice = GetDiscountedUnitPrice(cart, lineItem), IsGift = lineItem.IsGift }; }
public ActionResult AddToCart(string code) { string warningMessage = string.Empty; ModelState.Clear(); if (Cart == null) { _cart = _cartService.LoadOrCreateCart(_cartService.DefaultCartName); } if (_cartService.AddToCart(Cart, code, out warningMessage)) { _orderRepository.Save(Cart); return MiniCartDetails(); } // HttpStatusMessage can't be longer than 512 characters. warningMessage = warningMessage.Length < 512 ? warningMessage : warningMessage.Substring(512); return new HttpStatusCodeResult(500, warningMessage); }
public PriceCalculator(ICart cart) { this.cart = cart; }
public CheckoutViewModelFactoryTests() { _cart = new FakeCart(new MarketImpl(new MarketId(Currency.USD)), Currency.USD); _cart.Forms.Single().Shipments.Single().LineItems.Add(new InMemoryLineItem()); _cart.Forms.Single().CouponCodes.Add("couponcode"); _cashPayment = new PaymentMethodViewModel<PaymentMethodBase> { SystemName = cashPaymentName }; _creditPayment = new PaymentMethodViewModel<PaymentMethodBase> { SystemName = creditPaymentName }; var paymentServiceMock = new Mock<IPaymentService>(); var marketMock = new Mock<IMarket>(); var currentMarketMock = new Mock<ICurrentMarket>(); var languageServiceMock = new Mock<LanguageService>(null, null, null, null); var paymentMethodViewModelFactory = new PaymentMethodViewModelFactory(currentMarketMock.Object, languageServiceMock.Object, paymentServiceMock.Object); currentMarketMock.Setup(x => x.GetCurrentMarket()).Returns(marketMock.Object); languageServiceMock.Setup(x => x.GetCurrentLanguage()).Returns(new CultureInfo("en-US")); paymentServiceMock.Setup(x => x.GetPaymentMethodsByMarketIdAndLanguageCode(It.IsAny<string>(), "en")).Returns( new[] { new PaymentMethodModel { Description = "Lorem ipsum", FriendlyName = "payment method 1", LanguageId = "en", PaymentMethodId = Guid.NewGuid(), SystemName = cashPaymentName }, new PaymentMethodModel { Description = "Lorem ipsum", FriendlyName = "payment method 2", LanguageId = "en", PaymentMethodId = Guid.NewGuid(), SystemName = creditPaymentName } }); var addressBookServiceMock = new Mock<IAddressBookService>(); addressBookServiceMock.Setup(x => x.List()).Returns(() => new List<AddressModel> { new AddressModel { AddressId = "addressid" } }); _preferredBillingAddress = CustomerAddress.CreateInstance(); _preferredBillingAddress.Name = "preferredBillingAddress"; addressBookServiceMock.Setup(x => x.GetPreferredBillingAddress()).Returns(_preferredBillingAddress); addressBookServiceMock.Setup(x => x.UseBillingAddressForShipment()).Returns(true); _startPage = new StartPage(); var contentLoaderMock = new Mock<IContentLoader>(); contentLoaderMock.Setup(x => x.Get<StartPage>(It.IsAny<PageReference>())).Returns(_startPage); var orderFactoryMock = new Mock<IOrderFactory>(); var urlResolverMock = new Mock<UrlResolver>(); var httpcontextMock = new Mock<HttpContextBase>(); var requestMock = new Mock<HttpRequestBase>(); requestMock.Setup(x => x.Url).Returns(new Uri("http://site.com")); requestMock.Setup(x => x.UrlReferrer).Returns(new Uri("http://site.com")); httpcontextMock.Setup(x => x.Request).Returns(requestMock.Object); Func<CultureInfo> func = () => CultureInfo.InvariantCulture; var shipmentViewModelFactoryMock = new Mock<ShipmentViewModelFactory>(null, null, null, null, null, null, func, null); shipmentViewModelFactoryMock.Setup(x => x.CreateShipmentsViewModel(It.IsAny<ICart>())).Returns(() => new[] { new ShipmentViewModel { CartItems = new[] { new CartItemViewModel { Quantity = 1 } } } }); _subject = new CheckoutViewModelFactory( new MemoryLocalizationService(), paymentMethodViewModelFactory, addressBookServiceMock.Object, contentLoaderMock.Object, orderFactoryMock.Object, urlResolverMock.Object, (() => httpcontextMock.Object), shipmentViewModelFactoryMock.Object); }
public void SetUp() { cart = A.Fake<ICart>(); calculator = new PriceCalculator(cart); }
private void ChangeQuantity(ICart cart, int shipmentId, string code, decimal quantity) { if (quantity == 0) { RemoveLineItem(cart, shipmentId, code); } var shipment = cart.GetFirstForm().Shipments.First(s => s.ShipmentId == shipmentId || shipmentId <= 0); var lineItem = shipment.LineItems.FirstOrDefault(x => x.Code == code); if (lineItem == null) { return; } cart.UpdateLineItemQuantity(shipment, lineItem, quantity); ValidateCart(cart); }
public void RecreateLineItemsBasedOnShipments(ICart cart, IEnumerable<CartItemViewModel> cartItems, IEnumerable<AddressModel> addresses) { var form = cart.GetFirstForm(); var items = cartItems .GroupBy(x => new { x.AddressId, x.Code, x.IsGift }) .Select(x => new { Code = x.Key.Code, AddressId = x.Key.AddressId, Quantity = x.Count(), IsGift = x.Key.IsGift }); foreach (var shipment in form.Shipments) { shipment.LineItems.Clear(); } form.Shipments.Clear(); foreach (var address in addresses) { IShipment shipment = _orderFactory.CreateShipment(); form.Shipments.Add(shipment); shipment.ShippingAddress = _addressBookService.ConvertToAddress(address); foreach (var item in items.Where(x => x.AddressId == address.AddressId)) { var lineItem = _orderFactory.CreateLineItem(item.Code); lineItem.IsGift = item.IsGift; lineItem.Quantity = item.Quantity; shipment.LineItems.Add(lineItem); } } ValidateCart(cart); }
public CartServiceTests() { _addressBookServiceMock = new Mock<IAddressBookService>(); _customerContextFacaceMock = new Mock<CustomerContextFacade>(); _inventoryProcessorMock = new Mock<IInventoryProcessor>(); _lineItemValidatorMock = new Mock<ILineItemValidator>(); _orderFactoryMock = new Mock<IOrderFactory>(); _orderRepositoryMock = new Mock<IOrderRepository>(); _placedPriceProcessorMock = new Mock<IPlacedPriceProcessor>(); _pricingServiceMock = new Mock<IPricingService>(); _productServiceMock = new Mock<IProductService>(); _productServiceMock = new Mock<IProductService>(); _promotionEngineMock = new Mock<IPromotionEngine>(); _marketMock = new Mock<IMarket>(); _currentMarketMock = new Mock<ICurrentMarket>(); _currencyServiceMock = new Mock<ICurrencyService>(); _subject = new CartService(_productServiceMock.Object, _pricingServiceMock.Object, _orderFactoryMock.Object, _customerContextFacaceMock.Object, _placedPriceProcessorMock.Object, _inventoryProcessorMock.Object, _lineItemValidatorMock.Object, _orderRepositoryMock.Object, _promotionEngineMock.Object, _addressBookServiceMock.Object, _currentMarketMock.Object, _currencyServiceMock.Object); _cart = new FakeCart(new Mock<IMarket>().Object, new Currency("USD")) { Name = _subject.DefaultCartName }; _orderRepositoryMock.Setup(x => x.Load<ICart>(It.IsAny<Guid>(), _subject.DefaultCartName)).Returns(new[] { _cart }); _orderRepositoryMock.Setup(x => x.Create<ICart>(It.IsAny<Guid>(), _subject.DefaultCartName)).Returns(_cart); _orderFactoryMock.Setup(x => x.CreateLineItem(It.IsAny<string>())).Returns((string code) => new InMemoryLineItem() { Code = code }); _orderFactoryMock.Setup(x => x.CreateShipment()).Returns(() => new InMemoryShipment()); _currentMarketMock.Setup(x => x.GetCurrentMarket()).Returns(_marketMock.Object); _lineItemValidatorMock.Setup(x => x.Validate(It.IsAny<ILineItem>(), It.IsAny<IMarket>(), It.IsAny<Action<ILineItem, ValidationIssue>>())).Returns(true); _placedPriceProcessorMock.Setup(x => x.UpdatePlacedPrice(It.IsAny<ILineItem>(), It.IsAny<CustomerContact>(), It.IsAny<IMarket>(), _cart.Currency, It.IsAny<Action<ILineItem, ValidationIssue>>())).Returns(true); }
public PatientService(ICart cart) { _cart = cart; }
public AccountController(ICart svc) { _cartService = svc; }
private Money? GetDiscountedPrice(ICart cart, ILineItem lineItem) { var marketId = _currentMarket.GetCurrentMarket().MarketId; var currency = _currencyService.GetCurrentCurrency(); if (cart.Name.Equals(_cartService.DefaultWishListName)) { var discountedPrice = _promotionService.GetDiscountPrice(new CatalogKey(_appContext.ApplicationId, lineItem.Code), marketId, currency); return discountedPrice != null ? discountedPrice.UnitPrice : (Money?)null; } return lineItem.GetDiscountedPrice(cart.Currency, _lineItemCalculator); }
private Money? GetDiscountedUnitPrice(ICart cart, ILineItem lineItem) { var discountedPrice = GetDiscountedPrice(cart, lineItem) / lineItem.Quantity; return discountedPrice.GetValueOrDefault().Amount < lineItem.PlacedPrice ? discountedPrice : null; }
private decimal GetLineItemsTotalQuantity(ICart cart) { return cart.GetAllLineItems().Sum(x => x.Quantity); }
/// <summary> /// Update /// </summary> public async Task<int> UpdateAsync(ICart cart) { return await repository.UpdateAsync(cart); }
/// <summary> /// NOTE: Deletes previous cart, adds new one /// </summary> /// <param name="cart">Cart item</param> /// <param name="deleteOldEntries">If delete, deletes old entries</param> /// <returns>Saves cart item</returns> public async Task<ICart> UpdateCartAsync(ICart cart, bool deletePreviousCart) { try { IUnitOfWork uow = repository.CreateUnitOfWork(); Task<CartEntity> result = null; if (deletePreviousCart) { int deleted = await uow.DeleteAsync<CartEntity>(c => c.GamesInCart == cart.GamesInCart); // if(deleted != 0) // result = uow.AddAsync<CartEntity>(AutoMapper.Mapper.Map<CartEntity>(cart)); } else { result = uow.UpdateWithAddAsync<CartEntity>(AutoMapper.Mapper.Map<CartEntity>(cart)); } await uow.CommitAsync(); ICart entity = Mapper.Map<ICart>(result.Result); return entity; } catch (Exception ex) { throw ex; } }