//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; } }
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; } } }