public async Task <IActionResult> GetAccessories([FromQuery] AccessoryParameters accessoryParameters) { var(accessories, metadata) = await _accessoryService.GetManyAsync(accessoryParameters); Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(accessories)); }
public async Task <(IEnumerable <AccessoryDto>, Metadata)> GetManyAsync(AccessoryParameters accessoryParameters) { var accessories = await _repositoryManager.Accessory.GetAllAccessoriesAsync(CurrentUserId, accessoryParameters); if (accessories == null) { _logger.LogWarning("There are no accessories in db!"); } return(_mapper.Map <IEnumerable <AccessoryDto> >(accessories), accessories?.Metadata); }
public async Task <PagedList <Accessory> > GetAllAccessoriesAsync(Guid userId, AccessoryParameters accessoryParameters) { var result = await FindByCondition(x => x.User.Id.Equals(userId)) .FilterBy(accessoryParameters) .Search(accessoryParameters.SearchTerm) .Sort(accessoryParameters.OrderBy) .Include(x => x.Device) .ToListAsync(); return(PagedList <Accessory> .ToPagedList(result, accessoryParameters.PageNumber, accessoryParameters.PageSize)); }
public static IQueryable <Accessory> FilterBy(this IQueryable <Accessory> queryable, AccessoryParameters accessoryParameters) { var filters = accessoryParameters.GetFilters(); foreach (var filter in filters) { queryable = filter switch { "Name" => queryable.Where(x => x.Name.Equals(accessoryParameters.Name)), "Category" => queryable.Where(x => x.Category.Equals(accessoryParameters.Category)), "Status" => queryable.Where(x => x.Status.Equals(accessoryParameters.Status)), "ModelNumber" => queryable.Where(x => x.ModelNumber.Equals(accessoryParameters.ModelNumber)), "Manufacturer" => queryable.Where(x => x.Manufacturer.Equals(accessoryParameters.Manufacturer)), "OfficeAddress" => queryable.Where(x => x.OfficeAddress.Equals(accessoryParameters.OfficeAddress)), _ => queryable }; } return(queryable); }