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);
        }
Exemplo n.º 2
0
 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)));
            }
        }
Exemplo n.º 4
0
 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));
     }
 }
Exemplo n.º 5
0
        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));
        }