Ejemplo n.º 1
0
        public async Task <IGetProductsResponseObject> Handle(IGetProductsRequestObject requestObject)
        {
            IEnumerable <Product> products = null;
            long totalProducts             = 0;

            try
            {
                requestObject.Validate();

                if (!requestObject.IsValid)
                {
                    return(new GetProductsResponseObject((int)HttpStatusCode.BadRequest,
                                                         requestObject.ValidationNotifications));
                }


                if (String.IsNullOrWhiteSpace(requestObject.Field))
                {
                    products = await _uow.ProductRepository.Query();

                    totalProducts = products.Count();
                }
                else
                {
                    var fieldProperties = typeof(Product).GetProperties().FirstOrDefault(prop => prop.Name == requestObject.Field);

                    if (fieldProperties == null)
                    {
                        return(new GetProductsResponseObject((int)HttpStatusCode.BadRequest, new ValidationNotification(Messages.ProductSearchFieldError, requestObject.Field)));
                    }

                    if (Decimal.TryParse(requestObject.Search, out _))
                    {
                        products =
                            await _uow.ProductRepository.Query(fieldProperties.Name + " = @queryValue", new { queryValue = requestObject.Search });
                    }
                    else
                    {
                        products =
                            await _uow.ProductRepository.Query(fieldProperties.Name + " like @queryValue", new { queryValue = "%" + requestObject.Search + "%" });
                    }


                    totalProducts = products.Count();
                }

                return(new GetProductsResponseObject(products, totalProducts));
            }
            catch (Exception e)
            {
                return(new GetProductsResponseObject((int)HttpStatusCode.InternalServerError, new ValidationNotification(Messages.ServerError, e.Message)));
            }
        }
Ejemplo n.º 2
0
 public async Task <IGetProductsResponseObject> Handle(IGetProductsRequestObject getProductRequestObject)
 {
     return(await _getProducts.Handle(getProductRequestObject));
 }