public void CreateAllotment(out ParkingSlot parkingSlot)
        {
            Console.Clear();
            Console.WriteLine("*********** Welcome to Parking Allotment ***********");
            Console.Write("Enter the number of slots for 2 wheelers    : ");
            string twoWheeler = Console.ReadLine();

            Console.Write("Enter the number of slots for 4 wheelers    : ");
            string fourWheeler = Console.ReadLine();

            Console.Write("Enter the number of slots for other vehicle : ");
            string otherVehilce = Console.ReadLine();

            if ((Convert.ToInt32(twoWheeler) < 0 || Convert.ToInt32(fourWheeler) < 0 || Convert.ToInt32(otherVehilce) < 0) ||
                (Convert.ToInt32(twoWheeler) > int.MaxValue || Convert.ToInt32(fourWheeler) > int.MaxValue || Convert.ToInt32(otherVehilce) > int.MaxValue) ||
                (Convert.ToInt32(twoWheeler) < int.MinValue || Convert.ToInt32(fourWheeler) < int.MinValue || Convert.ToInt32(otherVehilce) < int.MinValue))
            {
                Error(3);
                Console.ReadLine();
                CreateAllotment(out parkingSlot);
            }
            else
            {
                parkingSlot = new ParkingSlot(int.Parse(twoWheeler), int.Parse(fourWheeler), int.Parse(otherVehilce));
            }
        }
예제 #2
0
        public ParkingSlot GetParkingSlot(Ticket ticket)
        {
            ParkingSlot parkingSlot = ParkingSlotList.Find(e => e.SlotId == ticket.SlotId);

            if (parkingSlot != null)
            {
                return(parkingSlot);
            }
            else
            {
                throw (new Exception("Ticket not Found"));
            }
        }
        public void DisplayAllSlots(ParkingSlot parkingslot)
        {
            Console.WriteLine("\n\n******************  Parking Alloment Display  ******************");
            Console.WriteLine("Two Wheeler Parking Empty Slots   = " + parkingslot.GetEmptyTwoWheelerSlots());
            Console.WriteLine("Four Wheeler Parking Empty Slots  = " + parkingslot.GetEmptyFourWheelerSlots());
            Console.WriteLine("Other Vehicle Parking Empty Slots = " + parkingslot.GetEmptyOtherVehicleSlots());
            List <Vehicle> vehicleList = parkingslot.GetVehicleList();

            foreach (Vehicle vehicle in vehicleList)
            {
                Console.WriteLine("\nslot {0}\nVehicleType {1}\tVehicle no. {2} ", vehicleList.IndexOf(vehicle) + 1, vehicle.GetNumberOfWheels(), vehicle.GetVehicleNumber());
            }
            Console.WriteLine("\n\n");
        }
예제 #4
0
        public void UnPark(Vehicle vehicle)
        {
            bool        unparked     = false;
            ParkingSlot occupiedSlot = ParkingSlotList.Find(e => e.vehicle.VehicleNumber == vehicle.VehicleNumber && e.vehicle.vehicleType == vehicle.vehicleType);

            if (occupiedSlot != null)
            {
                occupiedSlot.vehicle  = new Vehicle(vehicle.vehicleType, "");
                occupiedSlot.IsBooked = false;
            }
            else
            {
                throw (new Exception("Vehicle not found"));
            }
        }
예제 #5
0
        public ParkingSlot Park(Vehicle vehicle)
        {
            ParkingSlot freeSlot = ParkingSlotList.Find(e => !e.IsBooked && e.vehicle.vehicleType == vehicle.vehicleType);

            if (freeSlot != null)
            {
                freeSlot.vehicle  = vehicle;
                freeSlot.IsBooked = true;
                return(freeSlot);
            }
            else
            {
                throw (new Exception("Parking Slots are Full"));
            }
        }
 public void DisplayMenu(ParkingSlot parkingSlot)
 {
     while (true)
     {
         Console.WriteLine("\n\n1. Park Vehicle");
         Console.WriteLine("2. Unpark Vehicle");
         Console.WriteLine("3. Display All Slots");
         Console.WriteLine("4. Exit");
         Console.WriteLine("Choose any option");
         string choice = Console.ReadLine();
         if (choice == "4")
         {
             break;
         }
         SelectOption(int.Parse(choice), parkingSlot);
     }
 }
        public void SelectOption(int choice, ParkingSlot parkingSlot)
        {
            switch (choice)
            {
            case 1:
                VehicleType vehicle;
                string      vehicleNumber = ReadVehicleDetail(out vehicle);
                while (vehicle == VehicleType.NONE)
                {
                    vehicleNumber = ReadVehicleDetail(out vehicle);
                }
                if (!parkingSlot.ParkVehicle(vehicle, vehicleNumber))
                {
                    Error(1);
                }
                break;

            case 2:
                VehicleType vehicle2;
                string      vehicleNumber2 = ReadVehicleDetail(out vehicle2);
                while (vehicle2 == VehicleType.NONE)
                {
                    vehicleNumber2 = ReadVehicleDetail(out vehicle2);
                }
                if (!parkingSlot.UnParkVehicle(vehicle2, vehicleNumber2))
                {
                    Error(2);
                }
                break;

            case 3:
                DisplayAllSlots(parkingSlot);
                break;

            default:
                Console.WriteLine("Invalid Choice");
                break;
            }
        }
예제 #8
0
 public void UnParkVehicle(ParkingSlot parkingSlot)
 {
     ParkingSlotList.Remove(parkingSlot);
 }
예제 #9
0
 public void ParkVehicle(ParkingSlot parkingSlot)
 {
     ParkingSlotList.Add(parkingSlot);
 }
예제 #10
0
 public string GenerateTicket(ParkingSlot parkingSlot)
 {
     TicketList.Add(new Ticket(parkingSlot.vehicle, "T-" + (TicketList.Count() + 1), parkingSlot.SlotId));
     return("T-" + (TicketList.Count()));
 }
예제 #11
0
        public void SelectOption(int choice, ParkingSlot parkingSlot)
        {
            VehicleType vehicleType;
            string      vehicleNumber;

            switch (choice)
            {
            case 1:
                vehicleNumber = ReadVehicleDetail(out vehicleType);
                while (vehicleType == VehicleType.NONE)
                {
                    vehicleNumber = ReadVehicleDetail(out vehicleType);
                }
                if (parkingSlot.GetNumberOfTwoWheelerParked() < TwoWheelerCapacity && vehicleType == VehicleType.TWO_WHEELER)
                {
                    TwoWheelerCapacity++;
                    parkingSlot.ParkVehicle(vehicleType, vehicleNumber);
                }
                else if (parkingSlot.GetNumberOfFourWheelerParked() < FourWheelerCapacity && vehicleType == VehicleType.FOUR_WHEELER)
                {
                    FourWheelerCapacity++;
                    parkingSlot.ParkVehicle(vehicleType, vehicleNumber);
                }
                else if (parkingSlot.GetNumberOfOtherVehicleParked() < OtherVehicleCapacity && vehicleType == VehicleType.OTHER)
                {
                    OtherVehicleCapacity++;
                    parkingSlot.ParkVehicle(vehicleType, vehicleNumber);
                }
                else
                {
                    Error(SLOT_FULL_ERROR);
                }
                break;

            case 2:
                vehicleNumber = ReadVehicleDetail(out vehicleType);
                bool unParked = false;
                while (vehicleType == VehicleType.NONE)
                {
                    vehicleNumber = ReadVehicleDetail(out vehicleType);
                }
                List <Vehicle> vehicleList = parkingSlot.GetVehicleList();
                foreach (Vehicle vehicle in vehicleList)
                {
                    if (vehicle.GetVehicleType().Equals(vehicleType) && vehicle.GetVehicleNumber().Equals(vehicleNumber))
                    {
                        parkingSlot.UnParkVehicle(vehicleType, vehicleNumber);
                        unParked = true;
                    }
                }
                if (!unParked)
                {
                    Error(VEHICLE_NOT_FOUND_ERROR);
                }
                break;

            case 3:
                DisplayAllSlots(parkingSlot);
                break;

            default:
                Console.WriteLine("Invalid Choice");
                break;
            }
        }
        public void MainMenu(ParkingLot parkingLot)
        {
            Console.Clear();
            Console.WriteLine("*******************  Welcome to Parking Allotment System  *******************");
            while (true)
            {
                Console.WriteLine("1. Park Vehicle");
                Console.WriteLine("2. UnPark Vehicle");
                Console.WriteLine("3. View All Slots");
                Console.WriteLine("4. View Available Slots");
                Console.WriteLine("5. View Booked Slots");
                Console.WriteLine("6. View All Tickets");
                Console.WriteLine("7. Exit");

                Vehicle vehicle;

                try
                {
                    int choice = int.Parse(Console.ReadLine());
                    if (choice == 7)
                    {
                        break;
                    }
                    switch (choice)
                    {
                    case 1:
                        //Park Vehicle
                        vehicle = ReadVehicleDetails();
                        ParkingSlot parkingSlot = parkingLot.Park(vehicle);
                        Console.WriteLine("Do you want ticket ? y/n");
                        if (Console.ReadLine() == "y")
                        {
                            Ticket ticket = parkingLot.GenerateTicket(parkingSlot);
                            Console.WriteLine("Your Ticket Number is : {0}", ticket.TicketNumber);
                        }
                        break;

                    case 2:
                        //Unpark Vehicle
                        Console.WriteLine("Enter the Ticket Number");
                        string      TicketNumber = Console.ReadLine();
                        Ticket      ticket       = parkingLot.GetTicketList().Where(e => e.TicketNumber == TicketNumber).First();
                        ParkingSlot slot         = parkingLot.GetParkingSlot(ticket);
                        parkingLot.UnPark(slot.vehicle);
                        ticket.OutTime = DateTime.Now;
                        break;

                    case 3:
                        //Display All Slots
                        DisplayAllSlots(parkingLot);
                        break;

                    case 4:
                        //Display All Available Slots
                        DisplaySlots(parkingLot, false);
                        break;

                    case 5:
                        //Display All Booked Slots
                        DisplaySlots(parkingLot, true);
                        break;

                    case 6:
                        //Display Tickets
                        DisplayTicket(parkingLot);
                        break;

                    default:
                        Console.WriteLine("Invalid Choice");
                        break;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }