/// <summary> /// Metoden hanterar inmatning av kommandon från ui /// Hantering av inmatning av namn på garage och dess kapacitet /// </summary> /// <returns>enum MenuInputResult med olika värden beroende på användarens kommando</returns> private MenuInputResult HandleInput() { MenuInputResult result = MenuInputResult.NA; // Inläsning av namnet på garaget string strInput = this.Ui.ReadLine(); if (!String.IsNullOrWhiteSpace(strInput)) { strInput = strInput.Trim(); if (strInput.StartsWith('0')) {// Användaren har valt att avsluta programmet. Återgå till huvudmenyn result = MenuInputResult.TO_MAIN_MENU; } else { // Nu har vi namnet på garaget string strGarageName = strInput; // Nu skall vi läsa in kapacitet Ui.WriteLine("0. För att återgå till huvudmenyn"); Ui.WriteLine("Ange antal platser i garaget "); int iCapacity = 0; // Inläsning av garagets kapacitet strInput = this.Ui.ReadLine(); if (!String.IsNullOrWhiteSpace(strInput)) { strInput = strInput.Trim(); if (strInput.StartsWith('0')) {// Användaren har valt att avsluta programmet. Återgå till huvudmenyn result = MenuInputResult.TO_MAIN_MENU; } else { string strCapacity = strInput; if (Int32.TryParse(strCapacity, out iCapacity) && iCapacity > 0) {// Vi har en capacity // Skapa ett nytt garage IGarageFactory garageFactory = new GarageFactory(); IGarage <ICanBeParkedInGarage> garage = garageFactory.CreateGarage(Guid.NewGuid(), strGarageName, iCapacity); // Skapa en handler som skall hantera det nya garaget IGarageHandler garageHandler = new Excercise5Garage.GarageHandler.GarageHandler(garage, this.Ui); // Lägg till handlern till en lista med olika garagehandlers this.GarageHandlers.Add(garageHandler); Ui.WriteLine("Skapade garage. " + garage); Ui.WriteLine("Return för att återgå till huvudmenyn"); this.Ui.ReadLine(); result = MenuInputResult.TO_MAIN_MENU; } else { result = MenuInputResult.WRONG_INPUT; } } } else { result = MenuInputResult.WRONG_INPUT; } } } else { result = MenuInputResult.TO_MAIN_MENU; } return(result); }
/// <summary> /// Metoden simulerar skapandet av ett garage. /// Skapande av bilar som parkerar och lämnar garaget /// Visar även vad som händer om garaget är full och någon vill parkera /// </summary> private void SimulateGarage() { // GetMainMenu Ui.WriteLine("Simulering av att skapa ett garage. Parkera fordon och fordon lämnar garaget"); // Skapa en factory där jag kan skapa garage GarageFactory garageFactory = new GarageFactory(); Guid guid = Guid.NewGuid(); // Skapa ett garage var garage = garageFactory.CreateGarage(guid, "Första garaget", 5); // Skapa en GarageHandler som hantera allt om ett garage this.GarageHandlers.Add(new GarageHandler.GarageHandler(garage, this.Ui)); Ui.WriteLine($"Har skapat ett nytt garage. " + garage); // Vid simuleringen har jag bara en garagehandler och ett garage. Hämta den handlern var garageHandlers = this.GarageHandlers; IGarageHandler garageHandler = garageHandlers[0]; // Börja skapa lite fordon som parkeras i garaget IVehicleFactory vehicleFactory = new VehicleFactory(this.RegistrationNumberRegister); ICanBeParkedInGarage vehicle = vehicleFactory.CreateRandomVehicleForGarage(); garageHandler.ParkVehicle(vehicle); ICanBeParkedInGarage vehicle1 = vehicleFactory.CreateRandomVehicleForGarage(); garageHandler.ParkVehicle(vehicle1); ICanBeParkedInGarage vehicle2 = vehicleFactory.CreateRandomVehicleForGarage(); garageHandler.ParkVehicle(vehicle2); ICanBeParkedInGarage vehicle3 = vehicleFactory.CreateRandomVehicleForGarage(); garageHandler.ParkVehicle(vehicle3); ICanBeParkedInGarage vehicle4 = vehicleFactory.CreateRandomVehicleForGarage(); garageHandler.ParkVehicle(vehicle4); // Garaget är fullt, men vi försöker parkera ett fordon till ICanBeParkedInGarage vehicle5 = vehicleFactory.CreateRandomVehicleForGarage(); garageHandler.ParkVehicle(vehicle5); garageHandler.PrintInformationAboutGarage(); // Ett fordon lämnar garaget garageHandler.RemoveVehicle(vehicle1); garageHandler.PrintInformationAboutGarage(); // Ett fordon som inte finns i garaget lämnar garageHandler.RemoveVehicle(vehicle5); garageHandler.PrintInformationAboutGarage(); Ui.WriteLine("Return för att fortsätta"); Ui.ReadLine(); }