public async Task <IActionResult> GetExpirationDates([FromQuery] ExpirationDatesFilterParams filterParams) { Expression <Func <ExpirationDate, object> >[] includings = new Expression <Func <ExpirationDate, object> > [2]; if (filterParams.WithEmployees) { includings[0] = x => x.CollectedBy; } if (filterParams.WithProducts) { includings[1] = x => x.Product; } string userIdToFilter = (User.IsInRole("Admin") || User.IsInRole("Manager")) ? null : (await _userManager.GetUserAsync(User)).Id; PagedList <ExpirationDate> paginatedExpirationDates = await _repo.GetPaginated(filterParams.ExpirationDatesFiltersAsOneExpression(userIdToFilter), dbSet => dbSet.OrderBy(exp => exp.Collected ? 1 : 0).ThenBy(exp => exp.EndDate), filterParams, includings); Response.AddPagination(paginatedExpirationDates.CurrentPage, paginatedExpirationDates.PageSize, paginatedExpirationDates.TotalCount, paginatedExpirationDates.TotalPages); return(Ok(_mapper.Map <IEnumerable <ExpirationDateVM> >(paginatedExpirationDates.Items))); }