/// <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);
        }
Exemplo n.º 2
0
        /// <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();
        }