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