public GetProductAPIContract UpdateProductDetails(UpdateProductAPIArgs args, HttpRequestMessage request, string baseRequestUri) { DynamoDBTracer.Tracer.Write(string.Format("UpdateProductDetails called. Args: {0}", args), "Verbose"); this.CheckAndUpdateDoSLimits(request, args.EmailId); ProductCatalogEntity catalogEntity = ValidateAndGetEntityFromArgs(args); var offers = AmazonProductHelper.GetOffers(args.ProductASIN, args.ProductRegion.ToString()); var offersSummary = offers.Items.FirstOrDefault().Item.FirstOrDefault().OfferSummary; string price = offersSummary.LowestNewPrice.Amount; catalogEntity.InitialPrice = (double.Parse(price) / 100).ToString(); catalogEntity.CurrencyCode = offersSummary.LowestNewPrice.CurrencyCode; var catalogProvider = PriceUpdateContext.Instance.CatalogFactory.GetProductCatalogProvider(); catalogProvider.UpdateProduct(catalogEntity); DynamoDBTracer.Tracer.Write(string.Format("Catalog update succeeded. Args: {0}", args), "Verbose"); GetProductAPIArgs getArgs = new GetProductAPIArgs { ProductASIN = args.ProductASIN, ProductRegion = args.ProductRegion, }; var productDetails = this.GetProductDetails(getArgs, request); productDetails.CurrentPrice = catalogEntity.InitialPrice; productDetails.CurrencyCode = catalogEntity.CurrencyCode; productDetails.AmazonUrl = AmazonProductAPIWrapper.AmazonProductAPIConstants.RegionMapping[args.ProductRegion]; productDetails.EmailId = catalogEntity.EmailId; return(productDetails); //Start a background task to send confirmation email //Task.Factory.StartNew(() => SendConfirmationMail(args, baseRequestUri), TaskCreationOptions.None); }
public GetProductAPIContract GetProductDetails(GetProductAPIArgs args, HttpRequestMessage request) { DynamoDBTracer.Tracer.Write(string.Format("GetProductDetails called. Args: {0}", args), "Verbose"); this.CheckAndUpdateDoSLimits(request, "GetProductCall"); ItemLookupResponse itemResponse = AmazonProductHelper.GetItemDetails(args.ProductASIN, args.ProductRegion.ToString()); var item = itemResponse.Items.FirstOrDefault().Item.FirstOrDefault(); GetProductAPIContract apiContract = new GetProductAPIContract { ProductASIN = item.ASIN, ProductName = item.ItemAttributes.Title, ProductRegion = args.ProductRegion }; DynamoDBTracer.Tracer.Write(string.Format("GetProductDetails succeeded. Args: {0}", args), "Verbose"); return(apiContract); }