public ActionResult Index(StartPage currentPage, string selectedMarket) { TempData["IsOnLine"] = CheckIfOnLine.IsInternetAvailable; // not the best way... improve this if (selectedMarket != null) { _currentMarketService.SetCurrentMarket(new MarketId(selectedMarket)); // outcommented in Adv.-starter } // just testing //Buy(currentPage); //CheckOnParentAndNode(); //CheckInventory(); // native //CheckInventory2(); // AdjustOrRemove var model = new CommerceTraining.Models.ViewModels.PageViewModel <StartPage>(currentPage) { MainBodyStartPage = currentPage.MainBody, myPageChildren = _contentLoader.GetChildren <IContent>(currentPage.ContentLink), Customer = LoggedInOrNot(), // uncomment the below when the catalog is modelled topLevelCategories = FilterForVisitor.Filter( _contentLoader.GetChildren <CatalogContentBase>(topCategory).OfType <NodeContent>()), markets = _marketService.GetAllMarkets(), selectedMarket = _currentMarketService.GetCurrentMarket().MarketName, //selectedMarket = MarketId.Default.Value - starter in Adv. someInfo = GetStringInfo(currentPage) }; return(View(model)); }
public void UpdateLanguage(string languageId) { var chosenLanguage = languageId; var cookieLanguage = _cookieService.Get(LanguageCookie); if (string.IsNullOrEmpty(chosenLanguage)) { if (cookieLanguage != null) { chosenLanguage = cookieLanguage; } else { var currentMarket = _currentMarket.GetCurrentMarket(); if (currentMarket != null && currentMarket.DefaultLanguage != null) { chosenLanguage = currentMarket.DefaultLanguage.Name; } } } _defaultUpdateCurrentLanguage.UpdateLanguage(chosenLanguage); if (cookieLanguage == null || cookieLanguage != chosenLanguage) { _cookieService.Set(LanguageCookie, chosenLanguage); } }
public void Dump() { var languageBranch = _languageBranchRepository.ListAll().First(); var currentMarket = _currentMarket.GetCurrentMarket(); var market = (MarketImpl)_marketService.GetMarket(currentMarket.MarketId); market.DefaultCurrency = Currency.EUR; market.DefaultLanguage = languageBranch.Culture; _marketService.UpdateMarket(market); var rootLink = _referenceConverter.GetRootLink(); var catalog = _contentRepository.GetDefault <CatalogContent>(rootLink, languageBranch.Culture); catalog.Name = "Catalog"; catalog.DefaultCurrency = market.DefaultCurrency; catalog.CatalogLanguages = new ItemCollection <string> { languageBranch.LanguageID }; catalog.DefaultLanguage = "en"; catalog.WeightBase = "kg"; catalog.LengthBase = "cm"; var catalogRef = _contentRepository.Save(catalog, SaveAction.Publish, AccessLevel.NoAccess); var category = _contentRepository.GetDefault <NodeContent>(catalogRef); category.Name = "Category"; category.DisplayName = "Category"; category.Code = "category"; var categoryRef = _contentRepository.Save(category, SaveAction.Publish, AccessLevel.NoAccess); var product = _contentRepository.GetDefault <ProductContent>(categoryRef); product.Name = "Product"; product.DisplayName = "Product"; product.Code = "product"; var productRef = _contentRepository.Save(product, SaveAction.Publish, AccessLevel.NoAccess); var variant = _contentRepository.GetDefault <VariationContent>(productRef); variant.Name = "Variant"; variant.DisplayName = "Variant"; variant.Code = "test"; variant.MinQuantity = 1; variant.MaxQuantity = 100; _contentRepository.Save(variant, SaveAction.Publish, AccessLevel.NoAccess); var price = new PriceValue { UnitPrice = new Money(100, market.DefaultCurrency), CatalogKey = new CatalogKey(variant.Code), MarketId = market.MarketId, ValidFrom = DateTime.Today.AddYears(-1), ValidUntil = DateTime.Today.AddYears(1), CustomerPricing = CustomerPricing.AllCustomers, MinQuantity = 0 }; _priceService.SetCatalogEntryPrices(price.CatalogKey, new[] { price }); }
// GET: MarketsDemo public ActionResult Index() { var viewModel = new DemoMarketsViewModel(); viewModel.MarketList = _marketService.GetAllMarkets(); viewModel.SelectedMarket = _currentMarket.GetCurrentMarket(); var shirtRef = _referenceConverter.GetContentLink("Long Sleeve Shirt White Small_1"); viewModel.Shirt = _contentLoader.Get <ShirtVariation>(shirtRef); GetTaxInfo(viewModel); GetPriceInfo(viewModel); return(View(viewModel)); }
public ActionResult AddToCart(ShirtVariation currentContent, decimal Quantity, string Monogram) { // ToDo: (lab D1) add a LineItem to the Cart var cart = _orderRepository.LoadOrCreateCart <ICart>(PrincipalInfo.CurrentPrincipal.GetContactId(), "Default"); var item = cart.GetAllLineItems().Where(i => i.Code == currentContent.Code).FirstOrDefault(); if (item == null) { item = cart.CreateLineItem(currentContent.Code); item.Quantity = Quantity; cart.AddLineItem(item); } else { item.Quantity += Quantity; } var validLineItem = _lineItemValidator.Validate(item, _currentMarket.GetCurrentMarket().MarketId, (li, issue) => { }); if (validLineItem) { item.Properties["Monogram"] = Monogram; _orderRepository.Save(cart); } // if we want to redirect ContentReference cartRef = _contentLoader.Get <StartPage>(ContentReference.StartPage).Settings.cartPage; CartPage cartPage = _contentLoader.Get <CartPage>(cartRef); var name = cartPage.Name; var lang = ContentLanguage.PreferredCulture; string passingValue = cart.Name; // go to the cart page, if needed return(RedirectToAction("Index", lang + "/" + name, new { passedAlong = passingValue })); }
private Dictionary <ILineItem, List <ValidationIssue> > UpdateLineItemSku(ICart cart, int shipmentId, string oldCode, string newCode, decimal quantity) { 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 { newLineItem = cart.CreateLineItem(newCode, _orderGroupFactory); newLineItem.Quantity = quantity; cart.AddLineItem(newLineItem, _orderGroupFactory); var price = PriceCalculationService.GetSalePrice(newCode, cart.MarketId, _currentMarket.GetCurrentMarket().DefaultCurrency); if (price != null) { newLineItem.PlacedPrice = price.UnitPrice.Amount; } } return(ValidateCart(cart)); }
public IPurchaseOrder CreateFakePurchaseOrder() { var form = new InMemoryOrderForm { Payments = { new InMemoryPayment { BillingAddress = new InMemoryOrderAddress(), PaymentMethodName = "CashOnDelivery" } } }; form.Shipments.First().ShippingAddress = new InMemoryOrderAddress(); var market = _currentMarket.GetCurrentMarket(); var purchaseOrder = new InMemoryPurchaseOrder { Currency = market.DefaultCurrency, MarketId = market.MarketId, MarketName = market.MarketName, PricesIncludeTax = market.PricesIncludeTax, OrderLink = new OrderReference(0, string.Empty, Guid.Empty, typeof(IPurchaseOrder)) }; purchaseOrder.Forms.Add(form); return(purchaseOrder); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); var catalogSystem = Locate.Advanced.GetInstance <ICatalogSystem>(); var currentMarket = _currentMarketService.GetCurrentMarket(); // we need to use Variations responsegroup to get prices var entry = CurrentData.LoadEntry(CatalogEntryResponseGroup.ResponseGroup.Variations); var salePrice = StoreHelper.GetSalePrice(entry, 1); if (entry.IsAvailableInMarket(currentMarket.MarketId) && (salePrice != null)) { var basePrice = salePrice.Money; var discount = StoreHelper.GetDiscountPrice(entry).Money; if (discount.Amount == -1) { discount = basePrice; } var saved = basePrice.Subtract(discount); ListPrice.Text = basePrice.ToString(); DiscountPricing.Text = discount.ToString(); Savings.Text = saved.ToString(); return; } ListPrice.Text = "Not available"; DiscountPricing.Text = "Not available"; Savings.Text = "Not available"; }
public DeliveryReceipt(ICurrentMarket currentMarket, PurchaseOrderModel purchaseOrder) { if (purchaseOrder == null) throw new ArgumentNullException("purchaseOrder cannot be null"); _purchaseOrder = purchaseOrder; _orderViewModel = new OrderViewModel(currentMarket.GetCurrentMarket().DefaultCurrency.Format, _purchaseOrder); To = _orderViewModel.Email; var localizationService = ServiceLocator.Current.GetInstance<LocalizationService>(); IMarketService marketService = ServiceLocator.Current.GetInstance<IMarketService>(); IMarket market = GetMarketForOrder(purchaseOrder, marketService, currentMarket); string emailSubject = localizationService.GetStringByCulture("/common/receipt/email/subject", market.DefaultLanguage); Subject = string.Format(emailSubject, _purchaseOrder.TrackingNumber); BackendOrderNumber = _orderViewModel.ErpOrderNumber; PurchaseOrderNumber = _purchaseOrder.TrackingNumber; // Get first shipment tracking number if (_purchaseOrder.OrderForms != null && _purchaseOrder.OrderForms.Any() && _purchaseOrder.OrderForms.First().Shipments != null && _purchaseOrder.OrderForms.First().Shipments.Any()) { TrackingNumber = _purchaseOrder.OrderForms.First().Shipments.First().ShipmentTrackingNumber; } }
public Money?GetCurrentPrice(string code) { var market = _currentMarket.GetCurrentMarket(); var currency = _currencyService.GetCurrentCurrency(); return(GetPrice(code, market.MarketId, currency)); }
protected void MarketList_ItemDataBound(object sender, RepeaterItemEventArgs e) { var currentMarket = _currentMarket.GetCurrentMarket(); var item = e.Item; if (item.ItemType == ListItemType.Header) { // Set header to the current market ActOnControl <Literal>(item, "litCurrentMarket", c => c.Text = currentMarket.MarketName); return; } // If this line is not for current market, return var marketDataItem = item.DataItem as IMarket; if (marketDataItem == null || (marketDataItem.MarketId.Value != currentMarket.MarketId.Value)) { return; } // Visually indicate that current market is active ActOnControl <HtmlGenericControl>(item, "liMarketItem", c => c.Attributes.Add("class", "active")); // Disable link to set this market as current (is already current...) ActOnControl <LinkButton>(item, "linkSetMarket", c => c.Enabled = false); }
// lazy dev. private void LoadingExamples(ShirtVariation currentContent) { // some of this is / will be in Find //currentContent.LoadEntry(CatalogEntryResponseGroup.ResponseGroup.) ContentReference parent = currentContent.ParentLink; //...from "me" as the variation IEnumerable <EntryContentBase> nodeChildren = base._contentLoader.GetChildren <EntryContentBase>(parent); IEnumerable <ContentReference> allLinks = currentContent.GetCategories(); IEnumerable <Relation> nodes = currentContent.GetNodeRelations(); var theType = currentContent.GetOriginalType(); // handy var proxy = currentContent.GetType(); IEnumerable <ContentReference> prodParents = currentContent.GetParentProducts(); IEnumerable <ContentReference> parentPackages = currentContent.GetParentPackages(); IMarket market = _currentMarketService.GetCurrentMarket(); bool available = currentContent.IsAvailableInMarket(market.MarketId); // if we want to know about another market bool available2 = currentContent.IsAvailableInCurrentMarket(); ISecurityDescriptor sec = currentContent.GetSecurityDescriptor(); // CatalogContext.Current.GetCatalogEntriesDto() //currentContent.LoadEntryDt //ServiceLocator.Current.GetInstance<IOrderRepository>().Load<IOrderGroup>(); }
private void MergePriorityProducts(Commerce.Models.Blocks.ProductSearchBlock currentContent, ProductSearchResults result) { var products = new List <EntryContentBase>(); if (currentContent != null) { products = currentContent.PriorityProducts?.FilteredItems?.Select(x => x.GetContent() as EntryContentBase).ToList() ?? new List <EntryContentBase>(); } products = products.Where(x => !result.ProductViewModels.Any(y => y.Code.Equals(x.Code))) .Select(x => x) .ToList(); if (!products.Any()) { return; } var market = _currentMarket.GetCurrentMarket(); var currency = _currencyService.GetCurrentCurrency(); var ratings = _reviewService.GetRatings(products.Select(x => x.Code)) ?? null; var newList = result.ProductViewModels.ToList(); newList.InsertRange(0, products.Select(document => document.GetProductTileViewModel(market, currency))); result.ProductViewModels = newList; }
public ActionResult Index() { var receiptPage = _contentRepository.Get <ReceiptPage>(_siteConfiguration.GetSettings().ReceiptPage); var cartHelper = new CartHelper(Cart.DefaultName); string message = ""; OrderViewModel orderViewModel = null; if (cartHelper.Cart.OrderForms.Count > 0) { var orderNumber = cartHelper.Cart.GeneratePredictableOrderNumber(); _log.Debug("Order placed - order number: " + orderNumber); cartHelper.Cart.OrderNumberMethod = CartExtensions.GeneratePredictableOrderNumber; var results = OrderGroupWorkflowManager.RunWorkflow(cartHelper.Cart, OrderGroupWorkflowManager.CartCheckOutWorkflowName); message = string.Join(", ", OrderGroupWorkflowManager.GetWarningsFromWorkflowResult(results)); if (message.Length == 0) { cartHelper.Cart.SaveAsPurchaseOrder(); cartHelper.Cart.Delete(); cartHelper.Cart.AcceptChanges(); } var order = _orderService.GetOrderByTrackingNumber(orderNumber); // Must be run after order is complete, // This will release the order for shipment and // send the order receipt by email _paymentCompleteHandler.ProcessCompletedPayment(order, User.Identity); orderViewModel = new OrderViewModel(_currentMarket.GetCurrentMarket().DefaultCurrency.Format, order); } ReceiptViewModel model = new ReceiptViewModel(receiptPage); model.CheckoutMessage = message; model.Order = orderViewModel; // Track successfull order in Google Analytics TrackAfterPayment(model); return(View("ReceiptPage", model)); }
private PaymentInfo GetPaymentInfo() { var paymentMethods = PaymentManager.GetPaymentMethods(_currentMarket.GetCurrentMarket().DefaultLanguage.ToString()); var paymentInfo = new PaymentInfo(); foreach (var paymentMethodRow in paymentMethods.PaymentMethod.OrderBy(p => p.Ordering)) { paymentInfo.PaymentMethods.Add(paymentMethodRow); } // if there is only 1 choice, select it as default if (paymentInfo.PaymentMethods.Count == 1) { paymentInfo.PaymentMethods.First().IsDefault = true; } return(paymentInfo); }
protected IMarket GetMarketForOrder(PurchaseOrder purchaseOrder, IMarketService marketService, ICurrentMarket currentMarket) { if (purchaseOrder.MarketId != null && purchaseOrder.MarketId.Value != null) { return(marketService.GetMarket(purchaseOrder.MarketId)); } return(currentMarket.GetCurrentMarket()); }
//public ProductListViewModel GetProductListViewModel(WineSKUContent wineSkuContent) //{ // IProductListViewModelInitializer modelInitializer = wineSkuContent as IProductListViewModelInitializer; // if (modelInitializer != null) // return modelInitializer.Populate(); // return null; //} public ProductListViewModel GetProductListViewModel(IProductListViewModelInitializer productContent) { if (productContent != null) { return(productContent.Populate(_currentMarket.GetCurrentMarket())); } return(null); }
public ActionResult Index() { var receiptPage = _contentRepository.Get <ReceiptPage>(_siteConfiguration.GetSettings().ReceiptPage); var cartHelper = new CartHelper(Cart.DefaultName); if (cartHelper.IsEmpty && !PageEditing.PageIsInEditMode) { return(View("Error/_EmptyCartError")); } string message = ""; OrderViewModel orderViewModel = null; if (cartHelper.Cart.OrderForms.Count > 0) { var orderNumber = cartHelper.Cart.GeneratePredictableOrderNumber(); _log.Debug("Order placed - order number: " + orderNumber); cartHelper.Cart.OrderNumberMethod = CartExtensions.GeneratePredictableOrderNumber; System.Diagnostics.Trace.WriteLine("Running Workflow: " + OrderGroupWorkflowManager.CartCheckOutWorkflowName); var results = OrderGroupWorkflowManager.RunWorkflow(cartHelper.Cart, OrderGroupWorkflowManager.CartCheckOutWorkflowName); message = string.Join(", ", OrderGroupWorkflowManager.GetWarningsFromWorkflowResult(results)); if (message.Length == 0) { cartHelper.Cart.SaveAsPurchaseOrder(); cartHelper.Cart.Delete(); cartHelper.Cart.AcceptChanges(); } System.Diagnostics.Trace.WriteLine("Loading Order: " + orderNumber); var order = _orderService.GetOrderByTrackingNumber(orderNumber); // Must be run after order is complete, // This might release the order for shipment and // send the order receipt by email System.Diagnostics.Trace.WriteLine(string.Format("Process Completed Payment: {0} (User: {1})", orderNumber, User.Identity.Name)); _paymentCompleteHandler.ProcessCompletedPayment(order, User.Identity); orderViewModel = new OrderViewModel(_currentMarket.GetCurrentMarket().DefaultCurrency.Format, order); } ReceiptViewModel model = new ReceiptViewModel(receiptPage); model.CheckoutMessage = message; model.Order = orderViewModel; // Track successfull order in Google Analytics TrackAfterPayment(model); _metricsLoggingService.Count("Purchase", "Purchase Success"); _metricsLoggingService.Count("Payment", "Generic"); return(View("ReceiptPage", model)); }
public List <StoreItemViewModel> GetEntryStoresViewModels(string entryCode) { var entry = _contentLoader.Get <EntryContentBase>(_referenceConverter.GetContentLink(entryCode, CatalogContentType.CatalogEntry)); if (entry == null) { return(new List <StoreItemViewModel>()); } var warehouses = _warehouseRepository.List().Where(x => x.IsActive && x.IsPickupLocation); var codes = new List <string>(); if (entry.ClassTypeId.Equals("Variation") || entry.ClassTypeId.Equals("Package")) { codes.Add(entryCode); } else if (entry.ClassTypeId.Equals("Product")) { var product = entry as ProductContent; if (product != null) { codes.AddRange(product.GetVariants(_relationRepository).Select(x => _referenceConverter.GetCode(x))); } } if (!codes.Any()) { return(new List <StoreItemViewModel>()); } var records = _inventoryService.QueryByEntry(codes); if (!records.Any()) { return(new List <StoreItemViewModel>()); } var currentMarket = _currentMarket.GetCurrentMarket(); return(warehouses .Where(x => records.Any(y => y.WarehouseCode.Equals(x.Code) && !string.IsNullOrEmpty(x.ContactInformation.CountryCode) && currentMarket.Countries.Any(z => x.ContactInformation.CountryCode.Equals(z)))) .Select(x => GetWarehoseViewModel(x, records.FirstOrDefault(y => y.WarehouseCode.Equals(x.Code)))) .ToList()); }
private IEnumerable <ShippingMethodDto.ShippingMethodRow> GetShippingMethods() { ShippingMethodDto shippingMethodDto = ShippingManager.GetShippingMethodsByMarket(_currentMarket.GetCurrentMarket().MarketId.Value, false); return(shippingMethodDto.ShippingMethod.Rows.OfType <ShippingMethodDto.ShippingMethodRow>()); }
public DefaultVerifonePaymentService(ICurrentMarket currentMarket) { if (currentMarket == null) { throw new ArgumentNullException("currentMarket"); } CurrentMarket = currentMarket.GetCurrentMarket(); OrderContext = OrderContext.Current; }
public ReceiptViewModel BuildFor(DibsPaymentProcessingResult processingResult) { var receiptPage = _contentRepository.Get <ReceiptPage>(_siteConfiguration.GetSettings().ReceiptPage); var model = new ReceiptViewModel(receiptPage); model.CheckoutMessage = processingResult.Message; model.Order = new OrderViewModel(_currentMarket.GetCurrentMarket().DefaultCurrency.Format, processingResult.Order); return(model); }
public IEnumerable <SortOrder> GetSortOrder() { var market = _currentMarket.GetCurrentMarket(); var currency = _currencyService.GetCurrentCurrency(); return(new List <SortOrder> { new SortOrder { Name = ProductSortOrder.PriceAsc, Key = IndexingHelper.GetPriceField(market.MarketId, currency), SortDirection = SortDirection.Ascending }, new SortOrder { Name = ProductSortOrder.Popularity, Key = "", SortDirection = SortDirection.Ascending }, new SortOrder { Name = ProductSortOrder.NewestFirst, Key = "created", SortDirection = SortDirection.Descending } }); }
private OrderViewModel CreateOrderViewModel(PurchaseOrderModel order) { var model = new OrderViewModel(_currentMarket.GetCurrentMarket().DefaultCurrency.Format, order); // TODO order-payment method model.PaymentMethod = order.ProviderId; return(model); }
public Currency GetCurrentCurrency() { var currentMaket = _currentMarket.GetCurrentMarket(); var currencyCookie = _cookieRepository.Get <CurrencyCookie>(CurrencyCookie.CookieName); if (currencyCookie == null) { return(currentMaket.DefaultCurrency); } var currency = currentMaket.Currencies.FirstOrDefault(x => x.CurrencyCode == currencyCookie.CurrencytId); if (currency != null) { return(currency); } return(currentMaket.DefaultCurrency); }
public decimal GetDefaultPrice(ContentReference reference) { var currentMarket = _currentMarket.GetCurrentMarket(); var priceDetailValues = _priceDetailService.List(reference); var price = priceDetailValues.FirstOrDefault(d => d.MarketId == currentMarket.MarketId); return(price?.UnitPrice.Amount ?? 0.0m); }
public ICart LoadCart(string name) { var cart = _orderRepository.LoadCart <ICart>(_customerContext.GetCurrentUserGuid(), name, _currentMarket); if (cart != null) { SetCartCurrency(cart, _currentMarket.GetCurrentMarket().DefaultCurrency); var validationIssues = ValidateCart(cart); // After validate, if there is any change in cart, saving cart. if (validationIssues.Any()) { _orderRepository.Save(cart); } } return(cart); }
public decimal GetTheRightPrice(EntryContentBase CurrentContent) { IEnumerable <IPriceValue> priceValues; // need to check if anonymous or not ... so the EffectiveGroup does not bother // Anonymous... could use the DefaultPrice, but may miss the tiered price if set at Anonymous if (CustomerContext.Current.CurrentContact == null) { PriceFilter filter = new PriceFilter() { Quantity = 1M, Currencies = new Currency[] { _marketService.GetCurrentMarket().Currencies.FirstOrDefault() }, // only have one at the moment... CustomerPricing = new CustomerPricing[] { new CustomerPricing(CustomerPricing.PriceType.AllCustomers, null), }, ReturnCustomerPricing = false // }; // The rest needed, CatKey, Market, TimeStamp CatalogKey catalogKey = new CatalogKey(CurrentContent.Code); // 3 overloads priceValues = _priceService.GetPrices( currentMarket.Service.GetCurrentMarket().MarketId.Value, FrameworkContext.Current.CurrentDateTime, catalogKey, filter); } else { // Logged on // no custom PriceTypes... yet PriceFilter filter = new PriceFilter() { Quantity = 1M, Currencies = new Currency[] { _marketService.GetCurrentMarket().Currencies.FirstOrDefault() }, // only have one at the moment... CustomerPricing = new CustomerPricing[] { new CustomerPricing(CustomerPricing.PriceType.AllCustomers, null), new CustomerPricing(CustomerPricing.PriceType.PriceGroup, CustomerContext.Current.CurrentContact.EffectiveCustomerGroup), // or several... new CustomerPricing(CustomerPricing.PriceType.UserName, CustomerContext.Current.CurrentContact.FirstName) }, ReturnCustomerPricing = false // // ... if true; gets all that applies }; // The rest needed, CatKey, Market, TimeStamp CatalogKey catalogKey = new CatalogKey(new Guid(CurrentContent.ApplicationId), CurrentContent.Code); // 3 overloads priceValues = _priceService.GetPrices( currentMarket.Service.GetCurrentMarket().MarketId.Value, FrameworkContext.Current.CurrentDateTime, catalogKey, filter); } if (priceValues.Count() > 0) { return(priceValues.ToList().OrderBy(x => x.UnitPrice.Amount).FirstOrDefault().UnitPrice.Amount); } else { return(0); // should not actually, could use default price... it's a demo } }
public ActionResult Initiate() { var configuration = _configurationLoader.GetConfiguration(_currentMarket.GetCurrentMarket().MarketId); var vippsApi = _vippsServiceApiFactory.Create(configuration); var viewModel = new VippsTestViewModel(); try { var orderId = OrderNumberHelper.GenerateOrderNumber(); var initiatePaymentRequest = new InitiatePaymentRequest { CustomerInfo = new CustomerInfo(), MerchantInfo = new MerchantInfo { CallbackPrefix = EnsureCorrectUrl(configuration.SiteBaseUrl, "vippscallback/"), ConsentRemovalPrefix = EnsureCorrectUrl(configuration.SiteBaseUrl, "vippscallback/"), FallBack = EnsureCorrectUrl(configuration.SiteBaseUrl, $"vippstest/fallback?orderId={orderId}"), ShippingDetailsPrefix = EnsureCorrectUrl(configuration.SiteBaseUrl, "vippscallback/"), IsApp = false, MerchantSerialNumber = Convert.ToInt32(configuration.MerchantSerialNumber), PaymentType = VippsConstants.RegularCheckout }, Transaction = new Transaction { Amount = 20000, OrderId = orderId, TimeStamp = DateTime.Now, TransactionText = "test" } }; var result = vippsApi.Initiate(initiatePaymentRequest).Result; return(Redirect(result.Url)); } catch (Exception ex) { viewModel.Message = $"Initiate payment failed. Exception: {ex.Message} {ex.InnerException} {ex.StackTrace}"; return(View("Index", viewModel)); } }
public IEnumerable <CartItem> GetCartItems() { if (CartHelper.IsEmpty) { return(Enumerable.Empty <CartItem>()); } var cartItems = new List <CartItem>(); var lineItems = CartHelper.Cart.GetAllLineItems(); // In order to show the images for the items in the cart, we need to load the variants var variants = _contentLoader.GetItems(lineItems.Select(x => _referenceConverter.GetContentLink(x.Code)), _preferredCulture).OfType <VariationContent>(); var marketId = _currentMarket.GetCurrentMarket().MarketId; var currency = _currencyService.GetCurrentCurrency(); foreach (var lineItem in lineItems) { VariationContent variant = variants.FirstOrDefault(x => x.Code == lineItem.Code); ProductContent product = _contentLoader.Get <ProductContent>(variant.GetParentProducts().FirstOrDefault()); CartItem item = new CartItem { Code = lineItem.Code, DisplayName = lineItem.DisplayName, ImageUrl = variant.GetAssets <IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? "", ExtendedPrice = GetExtendedPrice(lineItem, marketId, currency), PlacedPrice = lineItem.ToMoney(lineItem.PlacedPrice), DiscountPrice = lineItem.ToMoney(currency.Round(((lineItem.PlacedPrice * lineItem.Quantity) - lineItem.Discounts.Cast <LineItemDiscount>().Sum(x => x.DiscountValue)) / lineItem.Quantity)), Quantity = lineItem.Quantity, Url = lineItem.GetUrl(), Variant = variant, Discounts = lineItem.Discounts.Cast <LineItemDiscount>().Select(x => new OrderDiscountModel { Discount = new Money(x.DiscountAmount, new Currency(CartHelper.Cart.BillingCurrency)), Displayname = x.DisplayMessage }), IsAvailable = _pricingService.GetCurrentPrice(variant.Code).HasValue }; if (product is FashionProduct) { var fashionProduct = (FashionProduct)product; var fashionVariant = (FashionVariant)variant; item.Brand = fashionProduct.Brand; var variations = _productService.GetVariations(fashionProduct); item.AvailableSizes = variations.Where(x => x.Color == fashionVariant.Color).Select(x => x.Size); } cartItems.Add(item); } return(cartItems); }
protected IMarket GetMarketForOrder(PurchaseOrderModel purchaseOrder, IMarketService marketService, ICurrentMarket currentMarket) { if (purchaseOrder.MarketId != null && purchaseOrder.MarketId.Value != null) { return marketService.GetMarket(purchaseOrder.MarketId); } return currentMarket.GetCurrentMarket(); }