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))); } }
public async Task <IGetProductsResponseObject> Handle(IGetProductsRequestObject getProductRequestObject) { return(await _getProducts.Handle(getProductRequestObject)); }