public async Task <IActionResult> GetReservations([Bind(
                                                               "SearchFilter," +
                                                               "SortItem," +
                                                               "MinPrice," +
                                                               "MaxPrice," +
                                                               "SearchValue," +
                                                               "FirstDate," +
                                                               "SecondDate")] ReserveAdminViewModel reserveAdmin, int page = 1)
        {
            var errMsg = TempData["ErrorMessage"];

            if (errMsg != null)
            {
                ModelState.AddModelError("", errMsg as string);
            }
            var model = await reservationRepository.GetReservations(page, reserveAdmin);

            return(View("Reservations", model));
        }
示例#2
0
        public async Task <IndexReserveAdminModel> GetReservations(int page, ReserveAdminViewModel reserve)
        {
            if (reserve == null)
            {
                return(new IndexReserveAdminModel()
                {
                    PageViewModel = new PageViewModel(0, 1, 3),
                    Reservations = new List <Reservation>(),
                    ReserveAdminViewModel = reserve
                });
            }

            reserve.SearchValue  = reserve.SearchValue == null ? "Any" : reserve.SearchValue;
            reserve.SearchFilter = reserve.SearchFilter == null ? "" : reserve.SearchFilter;
            reserve.SortItem     = reserve.SortItem == null ? "" : reserve.SortItem;

            IEnumerable <Reservation> item = new List <Reservation>();

            item = GetSortReserve(await GetSearchingReserve(reserve), reserve.SortItem);

            var count     = item.Count();
            var skipCells = item.Skip((page - 1) * 3).Take(3).ToList();

            if (skipCells.Count == 0 && page != 1)
            {
                skipCells = item.Skip((page - 2) * 3).Take(3).ToList();
                page     -= 1;
            }
            PageViewModel          pageViewModel = new PageViewModel(count, page, 3);
            IndexReserveAdminModel viewModel     = new IndexReserveAdminModel
            {
                PageViewModel         = pageViewModel,
                Reservations          = skipCells,
                ReserveAdminViewModel = reserve
            };

            return(viewModel);
        }
示例#3
0
        public async Task <IEnumerable <Reservation> > GetSearchingReserve(ReserveAdminViewModel reserve)
        {
            IQueryable <Reservation> list = dataContext.Reservations
                                            .AsNoTracking()
                                            .Include(x => x.UserInfo)
                                            .Include(x => x.Cell)
                                            .ThenInclude(x => x.Storage);


            if (reserve.MaxPrice == 0 && reserve.MinPrice != 0)
            {
                list = list.Where(x => x.Amount >= reserve.MinPrice);
            }
            else if (reserve.MaxPrice != 0 && reserve.MinPrice != 0)
            {
                list = list.Where(x => x.Amount >= reserve.MinPrice && x.Amount <= reserve.MaxPrice);
            }

            list = list.Where(x =>
                              (reserve.FirstDate == null ? true : x.StartReservation >= reserve.FirstDate) &&
                              (reserve.SecondDate == null ? true : x.EndReservation <= reserve.SecondDate));

            switch (reserve.SearchValue)
            {
            case "Location":
                return(await list.Where(x => x.Cell.Storage.Location.Contains(reserve.SearchFilter)).ToListAsync());

            case "CellId":
                return(await list
                       .Where(x => x.CellId.ToString().Contains(reserve.SearchFilter)).ToListAsync());

            case "ReservationId":
                return(await list.Where(x => x.ReservationId.ToString().Contains(reserve.SearchFilter)).ToListAsync());

            case "Active":
                bool any = reserve.SearchFilter.Contains("Active") ||
                           reserve.SearchFilter.Contains("active") ||
                           reserve.SearchFilter.Contains("true") ||
                           reserve.SearchFilter.Contains("True") ||
                           reserve.SearchFilter.Contains("1") ||
                           reserve.SearchFilter.Contains("activ");
                return(await list.Where(x => x.Status == any).ToListAsync());

            case "UserId":
                return(await list.Where(x => x.UserInfoId.ToString().Contains(reserve.SearchFilter)).ToListAsync());

            case "StorageId":
                return(await list.Where(x => x.Cell.StorageId.ToString().Contains(reserve.SearchFilter)).ToListAsync());

            default:
                return(await list
                       .Where(x =>
                              x.Amount.ToString().Contains(reserve.SearchFilter) ||
                              x.ReservationId.ToString().Contains(reserve.SearchFilter) ||
                              x.StartReservation.ToString().Contains(reserve.SearchFilter) ||
                              x.EndReservation.ToString().Contains(reserve.SearchFilter) ||
                              x.CellId.ToString().Contains(reserve.SearchFilter) ||
                              x.Cell.Storage.Location.Contains(reserve.SearchFilter))
                       .ToListAsync());
            }
        }