Esempio n. 1
0
        public async Task <PagedListResult <ProductDto> > GetAllAsPagedList(ProductListRequestDto input)
        {
            Expression <Func <Eron.Core.Entities.Financial.Shop.Product, bool> > filter = product => true;

            #region Check Filters

            if (input.ProductName.IsPopulated())
            {
                filter = x => x.Name.ToLower().Contains(input.ProductName.ToLower());
            }

            if (input.ProductCode.IsPopulated())
            {
                filter = filter.AndAlso(x => x.ProductCode.ToLower().Contains(input.ProductCode.ToLower()));
            }

            if (input.Availability.HasValue)
            {
                filter = filter.AndAlso(x => x.ExistsInShop == input.Availability);
            }


            #endregion

            var result = await UnitOfWork.ProductRepository.GetAsPagedListAsync(input, filter);

            foreach (var item in result.Result)
            {
                var lastPrice = item.Prices.OrderByDescending(x => x.CreateDateTime).FirstOrDefault();
                if (lastPrice != null)
                {
                    item.Price = lastPrice.Price;
                }
            }

            return(result.MapTo <PagedListResult <ProductDto> >());
        }
        public async Task <IHttpActionResult> GetAllAsPagedList(ProductListRequestDto input)
        {
            var result = await _service.GetAllAsPagedList(input);

            return(Ok(result));
        }