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