public async Task <IActionResult> GetLicenses([FromQuery] LicenseParameters licenseParameters) { var(licenses, metadata) = await _licenseService.GetManyAsync(licenseParameters); Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(licenses)); }
public async Task <PagedList <License> > GetAllLicensesAsync(Guid userId, LicenseParameters licenseParameters) { var result = await FindByCondition(x => x.User.Id.Equals(userId)) .FilterBy(licenseParameters) .Search(licenseParameters.SearchTerm) .Sort(licenseParameters.OrderBy) .Include(x => x.Employees) .ToListAsync(); return(PagedList <License> .ToPagedList(result, licenseParameters.PageNumber, licenseParameters.PageSize)); }
public async Task <(IEnumerable <LicenseDto>, Metadata)> GetManyAsync(LicenseParameters licenseParameters) { var licenses = await _repositoryManager.License.GetAllLicensesAsync(CurrentUserId, licenseParameters); if (licenses == null) { _logger.LogWarning("There are no licenses in db!"); } return(_mapper.Map <IEnumerable <LicenseDto> >(licenses), licenses?.Metadata); }
public static IQueryable <License> FilterBy(this IQueryable <License> queryable, LicenseParameters licenseParameters) { var filters = licenseParameters.GetFilters(); foreach (var filter in filters) { queryable = filter switch { "Name" => queryable.Where(x => x.Name.Equals(licenseParameters.Name)), "Category" => queryable.Where(x => x.Category.Equals(licenseParameters.Category)), "IsReAssignable" => queryable.Where(x => x.IsReAssignable.Equals(licenseParameters.IsReAssignable)), "Manufacturer" => queryable.Where(x => x.Manufacturer.Equals(licenseParameters.Manufacturer)), "LicensedToEmail" => queryable.Where(x => x.LicensedToEmail.Equals(licenseParameters.LicensedToEmail)), _ => queryable }; } return(queryable); }