示例#1
0
        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);
        }
示例#2
0
        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);
        }