//Add vehicle method
        protected internal static void AddVehicle(Vehicle.VehicleType vehicleType)
        {
            byte EntranceHour = byte.TryParse(Console.ReadLine(), out byte carEntranceHour) ? carEntranceHour : HourDefaultValue;

            if (EntranceHour > 23)
            {
                ScreenMessages.PrintErrorMessage();
            }
            Vehicle vehicle;

            if (vehicleType == Vehicle.VehicleType.Car)
            {
                Car NewCar = new Car(IdGenerator());
                NewCar.EntryHour = EntranceHour;
                vehicle          = NewCar;
            }
            else
            {
                Bike NewBike = new Bike(IdGenerator());
                NewBike.EntryHour = EntranceHour;
                vehicle           = NewBike;
            }
            ExistedVehicleList.Add(vehicle);
            AllVehicleList.Add(vehicle);
            Console.WriteLine($"New {vehicleType} saved by ID of {vehicle.ID}.\nPress any key to continue.");
        }
        //Remove vehicle methods
        protected internal static void RemoveVehicle()
        {
            ulong Id = ulong.TryParse(Console.ReadLine(), out ulong id) ? id : 0;

            if (Id == 0)
            {
                ScreenMessages.PrintErrorMessage();
                return;
            }
            Vehicle vehicle = ExistedVehicleList.Find(x => x.ID == Id);

            if (vehicle != null)
            {
                if (vehicle.Type == Vehicle.VehicleType.Car)
                {
                    RemoveVehicle <Car>((Car)vehicle);
                }
                if (vehicle.Type == Vehicle.VehicleType.Bike)
                {
                    RemoveVehicle <Bike>((Bike)vehicle);
                }
                return;
            }
            ScreenMessages.PrintErrorMessage();
        }
        private static void RemoveVehicle <TVehicle>(TVehicle vehicle)
            where TVehicle : Vehicle, IParkable
        {
            Console.Write("Enter exit Hour: ");
            byte ExitHour = byte.TryParse(Console.ReadLine(), out byte exitHour) ? exitHour : HourDefaultValue;

            if (ExitHour > vehicle.EntryHour && ExitHour < 25)
            {
                //Exit and entrance hour can be check by DateTime.Now.Hour
                vehicle.ExitHour = ExitHour;
            }
            else
            {
                ScreenMessages.PrintErrorMessage();
                return;
            }
            Console.Clear();
            Console.WriteLine(vehicle.ToString());
            Console.Write("Are you sure to remove? (y/n)");
            char SureEntry = Console.ReadKey().KeyChar;

            Console.Write("\n");
            switch (SureEntry)
            {
            case 'y':
                ExistedVehicleList.Remove(vehicle);
                Console.Write("Vehicle removed.\nPress any key to continue.");
                Console.ReadKey();
                break;

            case 'n':
                Console.Write("Ok, press any key to continue.");
                Console.ReadKey();
                break;

            default:
                ScreenMessages.PrintErrorMessage();
                break;
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            char MainMenuKey;

            while (true)
            {
                //Main menu texts
                ScreenMessages.PrintMainMenuTexts();
                MainMenuKey = Console.ReadKey().KeyChar;
                switch (MainMenuKey)
                {
                case '1':
                    //Add new vehice menu texts
                    ScreenMessages.PrintAddMenuTexts();
                    char AddMenuKey = Console.ReadKey().KeyChar;
                    switch (AddMenuKey)
                    {
                    case '1':
                        ScreenMessages.PrintAddVehicleMenuText("Car");
                        ParkingManager.AddVehicle(Vehicle.VehicleType.Car);
                        break;

                    case '2':
                        ScreenMessages.PrintAddVehicleMenuText("Bike");
                        ParkingManager.AddVehicle(Vehicle.VehicleType.Bike);
                        break;

                    default:
                        ScreenMessages.PrintErrorMessage();
                        break;
                    }
                    break;

                case '2':
                    //Remove vehicle menu texts
                    ScreenMessages.PrintRemoveMenuTexts();
                    ParkingManager.RemoveVehicle();
                    break;

                case '3':
                    //Feature vehicle menu texts
                    ScreenMessages.PrintFeaturesMenuTexts();
                    char FeatureKey = Console.ReadKey().KeyChar;
                    switch (FeatureKey)
                    {
                    case '1':
                        ParkingManager.PrintTotalIncome();
                        break;

                    case '2':
                        ParkingManager.PrintTotalVehicles();
                        break;

                    default:
                        ScreenMessages.PrintErrorMessage();
                        break;
                    }
                    break;

                case 'q':
                    Environment.Exit(0);
                    break;

                default:
                    ScreenMessages.PrintErrorMessage();
                    break;
                }
            }
        }