private void SetRequestAndResponse()
        {
            productRequest        = new ProductRequest {
            };
            productDetailsRequest = new ProductDetailsRequest {
                Id = "SampleId"
            };

            var product = new Product
            {
                Id                 = "SampleId",
                Name               = "Brinjal",
                EntryDate          = DateTime.Now,
                PriceWithDeduction = 10
            };

            productsResponse = new ProductsResponse {
                Products = new List <Product> {
                    product
                }
            };
            productDetailsResponse = new ProductDetailsResponse {
                Product = product
            };
        }
Ejemplo n.º 2
0
    /// <summary>
    /// The OnResult method fires when it recieves the answer from the server
    /// </summary>
    /// <param name="resultCode">Code</param>
    /// <param name="response">Response</param>
    public void OnResult(int resultCode, ProductDetailsResponse response)

    {
        hmsManager       = GameObject.Find("HMSManager").GetComponent <HMSManager>();
        callbacksHandler = GameObject.Find("HMSManager").GetComponent <HMSCallbacksHandler>();


        if (resultCode == 0)
        {
            hmsManager.numberOfProductsRetrieved++;
            callbacksHandler.onProductDetailSuccess(response);

            if (hmsManager.numberOfProductsRetrieved == hmsManager.products.Length)
            {
#if DEBUG
                Debug.Log("[HMS]: all products retrieved");
#endif
                callbacksHandler.productListInitialiced();
            }
        }
        else
        {
            callbacksHandler.onProductDetailError(resultCode);
        }
    }
Ejemplo n.º 3
0
        /// <summary>
        /// Request handler for product details
        /// </summary>
        /// <param name="request">Product details request</param>
        /// <returns>Product details response</returns>
        private async static Task <ProductDetailsResponse> GetProductDetailsAsync(ProductDetailsRequest request)
        {
            ProductDetailsResponse response = null;

            try
            {
                var productDto = await _productService.GetProductDetailsAsync(request.ProductId);

                var product = new Product()
                {
                    Id                 = productDto.Id,
                    Name               = productDto.Name,
                    EntryDate          = productDto.EntryDate,
                    PriceWithReduction = productDto.PriceWithReduction
                };

                //Generate the response message with product info and return
                response = new ProductDetailsResponse()
                {
                    Product = product
                };
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(response);
        }
Ejemplo n.º 4
0
        public async Task <ProductDetailsResponse> GetProductDetailsAsync(long productId)
        {
            var productInfo = await _dataSource.Database.HashGetAllAsync($"prod:{productId}");

            if (productInfo is null)
            {
                return(null);
            }

            var product = new ProductDetailsResponse();

            foreach (var info in productInfo)
            {
                if ("Name".Equals(info.Name, StringComparison.OrdinalIgnoreCase))
                {
                    product.Name = info.Value;
                }
                else if ("Description".Equals(info.Name, StringComparison.OrdinalIgnoreCase))
                {
                    product.Description = info.Value;
                }
                else if ("Price".Equals(info.Name, StringComparison.OrdinalIgnoreCase))
                {
                    if (double.TryParse(info.Value, out var price))
                    {
                        product.Price = price;
                    }
                }
            }

            var imagesTask   = _dataSource.Database.SetMembersAsync($"prod:{productId}:images");
            var colorsTask   = _dataSource.Database.SetMembersAsync($"prod:{productId}:colors");
            var sizesTask    = _dataSource.Database.SetMembersAsync($"prod:{productId}:sizes");
            var featuresTask = _dataSource.Database.HashGetAllAsync($"prod:{productId}:features");

            Task.WaitAll(imagesTask, colorsTask, sizesTask, featuresTask);

            if (imagesTask.Result != null)
            {
                product.Images = Array.ConvertAll(imagesTask.Result, img => img.ToString());
            }

            if (colorsTask.Result != null)
            {
                product.Colors = Array.ConvertAll(colorsTask.Result, color => color.ToString());
            }

            if (sizesTask.Result != null)
            {
                product.Sizes = Array.ConvertAll(sizesTask.Result, size => size.ToString());
            }

            foreach (var feature in featuresTask.Result)
            {
                product.Features.Add(feature.Name, feature.Value);
            }

            return(product);
        }
 public void Dispose()
 {
     _mockLogger            = null;
     _mockRabbitMqService   = null;
     productRequest         = null;
     productDetailsRequest  = null;
     productsResponse       = null;
     productDetailsResponse = null;
 }
Ejemplo n.º 6
0
        public async Task <IHttpActionResult> Details(long id)
        {
            var product = await repos.FindById(id);

            if (product == null)
            {
                return(NotFound());
            }
            var dto = AutoMapper.Mapper.Map <ProductDto>(product);
            var res = new ProductDetailsResponse {
                Product = dto
            };

            return(Ok(res));
        }
        public ProductDetailsResponse GetDetails(ProductDetailsRequest request)
        {
            var product = new ProductDetailsResponse();

            try
            {
                using (var bus = RabbitHutch.CreateBus(_rmqConnectionString))
                {
                    product = bus.Rpc.Request <ProductDetailsRequest, ProductDetailsResponse>(request);
                }
            }
            catch (Exception ex)
            {
                // log exception here
            }
            return(product);
        }
Ejemplo n.º 8
0
        public async Task <ProductDetailsResponse> GetByIdAsync(ProductDetailsRequest request)
        {
            var product = await _product.Find(c => c.Id == request.Id).FirstOrDefaultAsync();

            if (product == null)
            {
                return(null);
            }
            var totalReductions = product.PriceReductions.Select(a => a.Reduction).Sum();
            var response        = new ProductDetailsResponse
            {
                Id           = product.Id,
                Name         = product.Name,
                EntryDate    = product.EntryDate,
                CurrentPrice = (product.Price - totalReductions)
            };

            return(response);
        }
        public ProductDetailsResponse GetProductDetails(string id)
        {
            //Initialize();
            var             productDetailsResponse = new ProductDetailsResponse();
            var             collection             = iMongoDb.GetCollection <Products>(_productsCollection);
            ObjectId        internalId             = GetInternalId(id);
            PriceReductions PriceReduction         = GetPriceDeduction();

            var item = collection?.Find(Builders <Products> .Filter.Eq("_id", internalId))?.FirstOrDefault();

            if (item != null)
            {
                productDetailsResponse.Product = new Product
                {
                    Id                 = item.id.ToString(),
                    Name               = item.Name,
                    EntryDate          = item.EntryDate,
                    PriceWithDeduction = item.Price - Convert.ToDouble(PriceReduction?.Reduction)
                };
            }
            return(productDetailsResponse);
        }
Ejemplo n.º 10
0
        private TaskCompletionSource <Product> CaptureProductDetailsRequest(string ean)
        {
            inventoryClient.SetupCall(
                c => c.AutocompleteAsync(It.IsAny <AutocompleteRequest>(), null, null, It.IsAny <CancellationToken>()));

            var productDetailsRequest = inventoryClient.SetupCall(c => c.ProductDetailsAsync(
                                                                      It.Is <ProductDetailsRequest>(r => r.EAN == ean),
                                                                      null,
                                                                      null,
                                                                      It.IsAny <CancellationToken>()));

            var tcs = new TaskCompletionSource <Product>();

            tcs.Task.ContinueWith(task =>
            {
                var response = new ProductDetailsResponse {
                    Product = task.Result
                };
                productDetailsRequest.SetResult(response);
            });

            return(tcs);
        }
Ejemplo n.º 11
0
 public virtual void onProductDetailSuccess(ProductDetailsResponse response)
 {
     productList.Add(response.productList[0]);
     Debug.Log("[HMS]: " + response.productList.Count + "product detail retrieved");
 }