public async Task <ActionResult> GetLuggagesAsync(Pagination pagination, SearchLuggage search) { // Mapping: Luggage var luggagesSource = await _unitOfWork.Luggages.GetAllAsync(); var luggages = _mapper.Map <IEnumerable <Luggage>, IEnumerable <LuggageDTO> >(luggagesSource); // Search by LuggageWeight: if (search.LuggageWeight != null) { luggages = luggages.Where(l => l.LuggageWeight == search.LuggageWeight); } // Search by Price: if (search.PriceFrom != null && search.PriceTo != null) { luggages = luggages.Where(l => l.Price >= search.PriceFrom && l.Price <= search.PriceTo); } else if (search.PriceFrom != null && search.PriceTo == null) { luggages = luggages.Where(l => l.Price >= search.PriceFrom); } else if (search.PriceFrom == null && search.PriceTo != null) { luggages = luggages.Where(l => l.Price <= search.PriceTo); } // Sort Asc: if (search.sortAsc != "") { luggages = luggages.OrderBy(l => l.GetType().GetProperty(search.sortAsc).GetValue(l)); } // Sort Desc: if (search.sortDesc != "") { luggages = luggages.OrderByDescending(l => l.GetType().GetProperty(search.sortDesc).GetValue(l)); } return(Ok(PaginatedList <LuggageDTO> .Create(luggages, pagination.current, pagination.pageSize))); }
public async Task <ActionResult> GetLuggagesAsync([FromQuery] Pagination pagination, [FromQuery] SearchLuggage search) { var luggages = await _service.GetLuggagesAsync(pagination, search); return(luggages); }