Ejemplo n.º 1
0
        // 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));
        }
Ejemplo n.º 2
0
        // 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
            }));
        }
Ejemplo n.º 3
0
        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);
        }