Ejemplo n.º 1
0
        public async Task <PagedList <EquipmentViewModel> > IndexRequest <T>(IndexRequestModel request) where T : class
        {
            var pagedList = new PagedList <EquipmentViewModel>();
            var list      = new List <EquipmentViewModel>();
            int count;

            if (string.IsNullOrEmpty(request.Type) is false)
            {
                Enum.TryParse(request.Type, out EquipmentType choiceType);
                count = await _service.Count <Equipment>(x => x.EquipType == choiceType);
            }
            else
            {
                count = await _service.Count <Equipment>();
            }

            var data     = Enumerable.Empty <Equipment>();
            var query    = Enumerable.Empty <Equipment>();
            var searched = false;

            // Search
            if (!string.IsNullOrEmpty(request.SearchString))
            {
                query = await EquipmentDataFormatting.Search(_service.GetAll <Equipment>(), request.SearchString);

                count    = query.Count();
                searched = true;
            }

            // Sort
            if (!string.IsNullOrEmpty(request.SortVariable))
            {
                if (searched)
                {
                    data = EquipmentDataFormatting.Sort <Equipment>(query, request.SortVariable);
                }
                else
                {
                    data = EquipmentDataFormatting.Sort <Equipment>(_service.GetAll <Equipment>(), request.SortVariable);
                }

                foreach (var item in data)
                {
                    list.Add(new EquipmentViewModel()
                    {
                        Equipment = item
                    });
                }

                pagedList.Initialize(list.Skip(request.Page * request.PageSize).Take(request.PageSize), request, count);
            }
            // Index request without modifiers
            else
            {
                data = EquipmentDataFormatting.Sort <Equipment>(_service.GetAll <Equipment>(), "Date_desc");

                foreach (var item in data)
                {
                    list.Add(new EquipmentViewModel()
                    {
                        Equipment = item
                    });
                }

                pagedList.Initialize(list.Skip(request.Page * request.PageSize).Take(request.PageSize), request, count);
            }

            return(pagedList);
        }