Exemple #1
0
        public async Task <IActionResult> ReservationHistory([Bind("SearchFilter,SortItem,MinPrice,MaxPrice,SearchValue,FirstDate,SecondDate")] ReserveFilterViewModel reserveFilter, int page = 1)
        {
            int userId = await accountRepository.UserInfoId(User.Identity.Name);

            var list = await reservationRepository.GetUserReservations(userId, page, reserveFilter);

            return(View("ListOfReserve", list));
            //ViewBag.CurrentFilter = searching;
        }
Exemple #2
0
        public async Task <IActionResult> _ReservationHistory([Bind("SearchFilter,SortItem,MinPrice,MaxPrice,SearchValue,FirstDate,SecondDate")] ReserveFilterViewModel reserveFilter, int page = 1)
        {
            if (User.Identity.IsAuthenticated)
            {
                int userId = await accountRepository.UserInfoId(User.Identity.Name);

                var list = await reservationRepository.GetUserReservations(userId, page, reserveFilter);

                return(PartialView(list));
                //ViewBag.CurrentFilter = searching;
            }
            return(RedirectToAction(nameof(Login)));
        }
Exemple #3
0
        public async Task <IndexReserveModel> GetUserReservations(int userId, int page, ReserveFilterViewModel reserve)
        {
            if (reserve == null)
            {
                return(new IndexReserveModel()
                {
                    PageViewModel = new PageViewModel(0, 1, 3),
                    Reservations = new List <Reservation>(),
                    ReserveFilterViewModel = 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(userId, reserve), reserve.SortItem);

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

            PageViewModel     pageViewModel = new PageViewModel(count, page, 3);
            IndexReserveModel viewModel     = new IndexReserveModel
            {
                PageViewModel          = pageViewModel,
                Reservations           = skipCells,
                ReserveFilterViewModel = reserve
            };

            return(viewModel);
        }
Exemple #4
0
        public async Task <IEnumerable <Reservation> > GetSearchingReserve(int userId, ReserveFilterViewModel reserve)
        {
            var list = dataContext.Reservations
                       .AsNoTracking()
                       .Include(x => x.Cell)
                       .ThenInclude(x => x.Storage)
                       .Where(x => x.UserInfoId == userId);

            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());

            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());
            }
        }