public async Task <HSMeKitProduct> ApplyBuyerPricing(HSMeKitProduct kitProduct, VerifiedUserContext user) { var defaultMarkupMultiplierRequest = GetDefaultMarkupMultiplier(user); var defaultMarkupMultiplier = await defaultMarkupMultiplierRequest; foreach (var kit in kitProduct.ProductAssignments.ProductsInKit) { var markedupProduct = ApplyBuyerProductPricing(kit.Product, defaultMarkupMultiplier); var productCurrency = kit.Product.xp.Currency; var markedupSpecs = ApplySpecMarkups(kit.Specs.ToList(), defaultMarkupMultiplier, productCurrency); kit.Product = markedupProduct; kit.Specs = markedupSpecs; } return(kitProduct); }
public async Task <HSMeKitProduct> ApplyBuyerPricing(HSMeKitProduct kitProduct, VerifiedUserContext user) { var defaultMarkupMultiplierRequest = GetDefaultMarkupMultiplier(user); var exchangeRatesRequest = GetExchangeRatesForUser(user.AccessToken); await Task.WhenAll(defaultMarkupMultiplierRequest, exchangeRatesRequest); var defaultMarkupMultiplier = await defaultMarkupMultiplierRequest; var exchangeRates = await exchangeRatesRequest; foreach (var kit in kitProduct.ProductAssignments.ProductsInKit) { var markedupProduct = ApplyBuyerProductPricing(kit.Product, defaultMarkupMultiplier, exchangeRates); var productCurrency = kit.Product.xp.Currency; var markedupSpecs = ApplySpecMarkups(kit.Specs.ToList(), productCurrency, exchangeRates); kit.Product = markedupProduct; kit.Specs = markedupSpecs; } return(kitProduct); }
public async Task <HSMeKitProduct> GetMeKit(string id, VerifiedUserContext user) { var _product = await _oc.Me.GetProductAsync <HSMeProduct>(id, user.AccessToken); var _images = GetProductImages(id, user.AccessToken); var _attachments = GetProductAttachments(id, user.AccessToken); var _productAssignments = await _cms.Documents.Get <HSMeKitProductAssignment>("HSKitProductAssignment", _product.ID, user.AccessToken); var meKitProduct = new HSMeKitProduct { ID = _product.ID, Name = _product.Name, Product = _product, Images = await _images, Attachments = await _attachments, ProductAssignments = await _getMeKitDetails(_productAssignments.Doc, user.AccessToken) }; return(await _meProductCommand.ApplyBuyerPricing(meKitProduct, user)); }