// GET: ParkingSpots public ActionResult Index(string sortOrder, bool filterAvailableOnly = false) { IEnumerable <ParkingSpot> parkingSpots = null; CheckInsParkingSpots chps = new CheckInsParkingSpots(); if (filterAvailableOnly) { parkingSpots = chps.AvailableParkingSpots(); } else { parkingSpots = db.ParkingSpots(); } List <DetailsParkingSpotVM> viewModel = new List <DetailsParkingSpotVM>(); foreach (ParkingSpot parkingSpot in Sort(parkingSpots, sortOrder).ToList()) { CheckIn checkIn = chps.CheckInByParkingSpot(parkingSpot.ID); viewModel.Add(new DetailsParkingSpotVM { Availability = new CheckInsParkingSpots().Availability(checkIn), ParkingSpot = parkingSpot, CheckIn = checkIn }); } return(View(viewModel)); }
// GET: ParkingSpots/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ParkingSpot parkingSpot = db.ParkingSpot(id); if (parkingSpot == null) { return(HttpNotFound()); } CheckInsParkingSpots chps = new CheckInsParkingSpots(); CheckIn checkIn = chps.CheckInByParkingSpot(parkingSpot.ID); return(View(new DetailsParkingSpotVM { Availability = chps.Availability(checkIn), ParkingSpot = parkingSpot, CheckIn = checkIn })); }
public IEnumerable <ParkingSpot> Sort(IEnumerable <ParkingSpot> list, string sortOrder) { ViewBag.LabelSortParam = string.IsNullOrEmpty(sortOrder) ? "label_desc" : "label_asc"; ViewBag.AvailableSortParam = sortOrder == "available_asc" ? "available_desc" : "available_asc"; ViewBag.VehicleTypeSortParam = sortOrder == "vehicletype_asc" ? "vehicletype_desc" : "vehicletype_asc"; ViewBag.FeeSortParam = sortOrder == "fee_asc" ? "fee_desc" : "fee_asc"; ViewBag.RegistrationPlateSortParam = sortOrder == "regnum_asc" ? "regnum_desc" : "regnum_asc"; ViewBag.OwnerSortParam = sortOrder == "owner_asc" ? "owner_desc" : "owner_asc"; ViewBag.VehicleVehicleTypeSortParam = sortOrder == "vehicletype_asc" ? "vehicletype_desc" : "vehicletype_asc"; ViewBag.VehicleCheckInTimeSortParam = sortOrder == "checkin_asc" ? "checkin_desc" : "checkin_asc"; ViewBag.ParkingSpotSortParam = sortOrder == "spot_asc" ? "spot_desc" : "spot_asc"; ViewBag.VehicleFeeSortParam = sortOrder == "fee_asc" ? "fee_desc" : "fee_asc"; switch (sortOrder) { case "label_desc": list = list.OrderByDescending(p => p.Label); break; case "available_asc": list = new CheckInsParkingSpots().InnerJoin(list) .OrderBy(v_ch_p => v_ch_p.CheckIn == null) .ThenBy(v_ch_p => new CheckInsParkingSpots().Availability(v_ch_p.CheckIn)) .Select(v_ch_p => v_ch_p.ParkingSpot); break; case "available_desc": list = new CheckInsParkingSpots().InnerJoin(list) .OrderBy(v_ch_p => v_ch_p.CheckIn == null) .ThenByDescending(v_ch_p => new CheckInsParkingSpots().Availability(v_ch_p.CheckIn)) .Select(v_ch_p => v_ch_p.ParkingSpot); break; case "vehicletype_asc": list = list.OrderBy(p => p.VehicleType.Type); break; case "vehicletype_desc": list = list.OrderByDescending(p => p.VehicleType.Type); break; case "fee_asc": list = new CheckInsParkingSpots().InnerJoin(list) .OrderBy(v_ch_p => v_ch_p.CheckIn == null) .ThenBy(v_ch_p => GetFee(v_ch_p)) .Select(v_ch_p => v_ch_p.ParkingSpot); break; case "fee_desc": list = new CheckInsParkingSpots().InnerJoin(list) .OrderBy(v_ch_p => v_ch_p.CheckIn == null) .ThenByDescending(v_ch_p => GetFee(v_ch_p)) .Select(v_ch_p => v_ch_p.ParkingSpot); break; default: list = list.OrderBy(p => p.Label); break; } return(list); }