private IQueryable <Equipment> GetFiltered(IQueryable <Equipment> query, EquipmentSearchParameters search) { var result = query; if (search == null) { return(result); } if (!string.IsNullOrEmpty(search.Id)) { result = result.Where(e => !string.IsNullOrEmpty(e.Id) && e.Id.ToLower().Contains(search.Id.ToLower())); } if (!string.IsNullOrEmpty(search.Name)) { result = result.Where(e => !string.IsNullOrEmpty(e.Name) && e.Name.ToLower().Contains(search.Name.ToLower())); } if (!string.IsNullOrEmpty(search.Manufacturer)) { result = result.Where(e => !string.IsNullOrEmpty(e.Manufacturer) && e.Manufacturer.ToLower().Contains(search.Manufacturer.ToLower())); } if (!string.IsNullOrEmpty(search.Description)) { result = result.Where(e => !string.IsNullOrEmpty(e.Description) && e.Description.ToLower().Contains(search.Description.ToLower())); } return(result); }
private void FindEquipmentByParameter(EquipmentSearchParameters filterParameter) { for (int i = equipmentList.Count - 1; i > -1; i--) { if (GenerateCondition(filterParameter, equipmentList[i])) { equipmentList.Remove(equipmentList[i]); } } }
public async Task <ActionResult <PaginatedItemsDto <Equipment> > > GetPaginated( [FromHeader] string authToken, [FromQuery] int pageIndex = 0, [FromQuery] int pageSize = 1, [FromQuery] string orderBy = "Name", [FromQuery] bool isAscending = true, [FromQuery] EquipmentSearchParameters searchParameters = null ) { if (pageIndex < 0) { return(BadRequest("Page index must be greater than or equal to 0.")); } if (pageSize < 1) { return(BadRequest("Page size must be greater than or equal to 1.")); } if (!await _authenticationService.CheckAccess(authToken, "equipmentView")) { return(Unauthorized()); } if (!string.IsNullOrEmpty(searchParameters.StockId)) { Equipment equipment = await _equipmentService.GetFromStockId(searchParameters.StockId); List <Equipment> list = new List <Equipment>(); list.Add(equipment); var queryable = list.AsQueryable(); var filtered = GetFiltered(queryable, searchParameters); var ordered = isAscending ? filtered.OrderByMember(orderBy) : filtered.OrderByMemberDescending(orderBy); var paginated = ordered.Skip(pageIndex * pageSize).Take(pageSize); long totalCount = ordered.LongCount(); return(Ok(new PaginatedItemsDto <Equipment>(pageIndex, pageSize, totalCount, paginated))); } else { var equipment = await _equipmentService.Get(); var queryable = equipment.AsQueryable(); var filtered = GetFiltered(queryable, searchParameters); var ordered = isAscending ? filtered.OrderByMember(orderBy) : filtered.OrderByMemberDescending(orderBy); var paginated = ordered.Skip(pageIndex * pageSize).Take(pageSize); long totalCount = ordered.LongCount(); return(Ok(new PaginatedItemsDto <Equipment>(pageIndex, pageSize, totalCount, paginated))); } }
private bool GenerateCondition(EquipmentSearchParameters filterParameter, DetailEquipmentDTO equipment) { if (filterParameter.Equals(EquipmentSearchParameters.NAME)) { return(!string.Equals(equipment.Name, nameTextBox.Text)); } else if (filterParameter.Equals(EquipmentSearchParameters.TYPE)) { return(!string.Equals(equipment.Type, (string)typeComboBox.SelectedItem)); } else if (filterParameter.Equals(EquipmentSearchParameters.MIN_STATE)) { return(equipment.State < int.Parse(stateTextBox.Text)); } else { return(!string.Equals(equipment.Location, ((Room)locationComboBox.SelectedItem).Name)); } }
public async Task <ActionResult <CursorPaginatedResponse <EquipmentForReturnDto> > > GetEquipmentAsync([FromQuery] EquipmentSearchParameters searchParams) { var equipment = await equipmentRepository.SearchAsync(searchParams); var paginatedResponse = CursorPaginatedResponse <EquipmentForReturnDto> .CreateFrom(equipment, mapper.Map <IEnumerable <EquipmentForReturnDto> >); return(Ok(paginatedResponse)); }