Esempio n. 1
0
        public ListViewModel <ItemViewModel> GetItems(ItemQueryViewModel viewModel)
        {
            viewModel.PageNumber = viewModel.PageNumber ?? 1;
            viewModel.PageSize   = viewModel.PageSize ?? 30;
            var query = Repository.GetAll();
            Expression <Func <Item, ItemViewModel> > proj = x => new ItemViewModel
            {
                ItemId     = x.ItemId,
                ItemName   = x.ItemName,
                ItemNumber = x.ItemNumber,
                ItemType   = x.ItemType,
                UserId     = x.UserId
            };

            if (viewModel.ItemId.HasValue)
            {
                var result = query.Where(x => x.ItemId == viewModel.ItemId).Select(proj).FirstOrDefault();
                if (result == null)
                {
                    throw new NotFoundException("No such item");
                }
                return(new ListViewModel <ItemViewModel>(new List <ItemViewModel> {
                    result
                }, 1, 1));
            }

            if (!string.IsNullOrWhiteSpace(viewModel.Name))
            {
                query = query.Where(x => x.ItemName.Contains(viewModel.Name));
            }

            if (!string.IsNullOrWhiteSpace(viewModel.Type))
            {
                query = query.Where(x => x.ItemType == viewModel.Type);
            }

            if (viewModel.NumberMin.HasValue)
            {
                query = query.Where(x => x.ItemNumber >= viewModel.NumberMin);
            }

            if (viewModel.NumberMax.HasValue)
            {
                query = query.Where(x => x.ItemNumber < viewModel.NumberMax);
            }
            var count = query.Count();

            query = query.OrderBy(x => x.ItemName);
            if (viewModel.PageNumber.Value > 1)
            {
                query = query.Skip((viewModel.PageNumber.Value - 1) * viewModel.PageSize.Value);
            }
            query = query.Take(viewModel.PageSize.Value);

            var materialized = query.Select(proj).ToList();
            var totalPages   = (int)Math.Ceiling((double)count / viewModel.PageSize.Value);

            return(new ListViewModel <ItemViewModel>(materialized, viewModel.PageNumber.Value, totalPages));
        }
Esempio n. 2
0
 private async void Query(string obj)
 {
     ItemQueryViewModel viewModel = new ItemQueryViewModel(new SingleChecklist());
     await Navigation.PushAsync(new ItemQueryPage()
     {
         BindingContext = viewModel
     });
 }
Esempio n. 3
0
        public ActionResult <ListViewModel <ItemViewModel> > GetItems([FromQuery] ItemQueryViewModel viewModel)
        {
            if (!viewModel.PageSize.HasValue || viewModel.PageSize.Value > 200)
            {
                viewModel.PageSize = 200;
            }
            else if (viewModel.PageSize.Value <= 0)
            {
                viewModel.PageSize = 30;
            }
            var result = Service.GetItems(viewModel);

            return(new ActionResult <ListViewModel <ItemViewModel> >(result));
        }