Exemplo n.º 1
0
        internal static void DeleteGarage(GarageHandler gh, MenuHandler mh)
        {
            if (gh.garages.Count > 1)
            {
                var beforeC       = gh.garages.Count();
                var operationOk   = gh.TryDeleteGarage(gh.garageId);
                var afterC        = gh.garages.Count();
                var minskatMedEtt = afterC == beforeC - 1;

                if (!operationOk || !minskatMedEtt)
                {
                    ConsoleHelper.Announce("Ett fel inträffade när garaget skulle raderas");
                    return;
                }

                MenuBuilder.UpdateGarageMenu(gh, mh);
                MenuBuilder.UpdateVehicleMenu(gh, mh);

                var firstGarage = gh.garages.FirstOrDefault();
                gh.TrySetGarage(firstGarage.Id);

                mh.GoBack();
            }
            else
            {
                ConsoleHelper.Announce("Minst ett garage måste existera");
            }
        }
Exemplo n.º 2
0
        internal static void UpdateVehicleMenu(GarageHandler gh, MenuHandler mh)
        {
            mh.menus.Remove("vehicleIndex");
            var items = new List <MenuItem>();

            var    currentGarage = gh.GetCurrentGarage();
            string garageName;

            if (currentGarage != null)
            {
                items      = (List <MenuItem>)MenuConverter.VehiclesToMenuItems(currentGarage.Vehicles);
                garageName = currentGarage.Name;
            }
            else
            {
                garageName = "";
            }

            var labelRow = Vehicle.ToHeader();

            items.Insert(0, new MenuItem(labelRow));

            items.Add(new MenuItem(""));
            items.Add(new MenuItem("Nytt fordon", new MenuAction(Create, "vehicle")));
            items.Add(new MenuItem("Byt namn på garage", new MenuAction(Edit, "garage")));
            items.Add(new MenuItem("Ta bort garage", new MenuAction(Delete, "garage")));

            mh.AddMenu(new Menu("vehicleIndex", garageName + " -> Välj fordon", items));
        }
Exemplo n.º 3
0
 internal static void UpdateAllMenus(GarageHandler gh, MenuHandler mh)
 {
     MenuBuilder.UpdateMainMenu(gh, mh);
     MenuBuilder.UpdateGarageMenu(gh, mh);
     MenuBuilder.UpdateGroupMenu(gh, mh);
     MenuBuilder.UpdateVehicleMenu(gh, mh);
 }
Exemplo n.º 4
0
        public void Run()
        {
            IConsoleUI    ui = new ConsoleUI();
            GarageHandler gh = new GarageHandler(ui);

            gh.Run();
        }
Exemplo n.º 5
0
        internal static void UpdateGroupMenu(GarageHandler gh, MenuHandler mh)
        {
            mh.menus.Remove("allGroupIndex");
            var vehicles = gh.GetCurrentGarage().Vehicles;

            mh.AddMenu(new Menu("allGroupIndex", "Välj grupp",
                                MenuConverter.VehiclesToMenuItemsByGroup(vehicles)));
        }
Exemplo n.º 6
0
        internal static void UpdateGroupResult(GarageHandler gh, MenuHandler mh, string typ)
        {
            mh.menus.Remove("groupedVehicleIndex");

            var vehicles = gh.AllVehiclesByType(typ);

            var items = new List <MenuItem>();

            items = (List <MenuItem>)MenuConverter.VehiclesToMenuItems(vehicles);

            mh.AddMenu(new Menu("groupedVehicleIndex", "Fordon inom grupp", items));
        }
Exemplo n.º 7
0
        internal static void CreateGarage(GarageHandler gh, MenuHandler mh)
        {
            Console.WriteLine();
            ConsoleColor oldFg = Console.ForegroundColor;

            Console.ForegroundColor = mh.settings.ActiveColor;
            string           name      = ConsoleHelper.AskQuestionText("Namn på nytt garage");
            Garage <Vehicle> newGarage = new Garage <Vehicle>(name);

            gh.garages.Add(newGarage);
            MenuBuilder.UpdateGarageMenu(gh, mh);
            Console.ForegroundColor = oldFg;
        }
Exemplo n.º 8
0
        internal static void RenameGarage(GarageHandler gh, MenuHandler mh)
        {
            Console.WriteLine();
            ConsoleColor oldFg = Console.ForegroundColor;

            Console.ForegroundColor = mh.settings.ActiveColor;
            string name = ConsoleHelper.AskQuestionText("Nytt namn");

            gh.GetCurrentGarage().Name = name;
            MenuBuilder.UpdateGarageMenu(gh, mh);
            MenuBuilder.UpdateVehicleMenu(gh, mh);
            Console.ForegroundColor = oldFg;
        }
Exemplo n.º 9
0
        internal static void UpdateGarageMenu(GarageHandler gh, MenuHandler mh)
        {
            mh.menus.Remove("garageIndex");
            var items = (List <MenuItem>)MenuConverter.GaragesToMenuItems(gh.garages);

            mh.AddMenu(new Menu("garageIndex", "Välj garage", items));

            var labelRow = Garage <Vehicle> .ToHeader();

            items.Insert(0, new MenuItem(labelRow, false));

            items.Add(new MenuItem("", true));
            items.Add(new MenuItem("Nytt garage", new MenuAction(Create, "garage")));
        }
Exemplo n.º 10
0
 public static int LoadAllGarages(GarageHandler gh)
 {
     try
     {
         string jsonData = File.ReadAllText(getPath(fileName));
         gh.garages = JsonConvert.DeserializeObject <List <Garage <Vehicle> > >(jsonData, new JsonSerializerSettings
         {
             TypeNameHandling = TypeNameHandling.All
         });
     }
     catch (FileNotFoundException)
     {
         // Vi hanterar om antal garage är 0 i garagehandler LoadFromDb
     }
     return(gh.garages.Count);
 }
Exemplo n.º 11
0
        internal static void DeleteVehicle(int id, GarageHandler gh, MenuHandler mh)
        {
            int     beforeC = gh.GetCurrentGarage().Vehicles.Count();
            Vehicle vehicle = (Vehicle)gh.TryDeleteVehicle(id);
            int     afterC  = gh.GetCurrentGarage().Vehicles.Count();

            if (vehicle != null && afterC == beforeC - 1)
            {
                // ConsoleHelper.Announce("Resultat", "Fordonet har raderats" + beforeC  + " " + afterC);
                MenuBuilder.UpdateVehicleMenu(gh, mh);
                mh.GoBack();
            }
            else
            {
                ConsoleHelper.Announce("Tyvärr, Fordonet kunde inte hittas");
            }
        }
Exemplo n.º 12
0
        internal static void Search(GarageHandler gh, MenuHandler mh)
        {
            ConsoleHelper.PutLabel("Sökning");
            var text = ConsoleHelper.AskQuestionText("sökterm");
            IEnumerable <Vehicle> found = gh.FindVehicles(text);

            if (found.Any())
            {
                mh.menus.Remove("searchIndex");
                mh.AddMenu(new Menu("searchIndex", "Sökresultat",
                                    MenuConverter.VehiclesToMenuItems(found)));
                mh.TryGotoMenu("searchIndex");
            }
            else
            {
                ConsoleHelper.Announce("Tyvärr, kunde inte hitta något fordon.");
            }
        }
Exemplo n.º 13
0
        internal static int AddVehicle(GarageHandler gh, MenuHandler mh)
        {
            Vehicle vehicle;

            ConsoleHelper.PutLabel("Lägg till fordon");

            // Todo: Använd en genererad meny-ui istället
            var typ = ConsoleHelper.AskQuestionText("Car/Motorcycle/OneWheeler/Airplane?").ToLower();

            if (typ == "car")
            {
                vehicle = new Car();
            }
            else if (typ == "motorcycle")
            {
                vehicle = new Motorcycle();
            }
            else if (typ == "onewheeler")
            {
                vehicle = new OneWheeler();
            }
            else if (typ == "airplane")
            {
                vehicle = new Airplane();
            }
            else
            {
                vehicle = new Vehicle();
            }

            gh.AddVehicle(vehicle);

            // MenuBuilder.UpdateGarageMenu(gh, mh);
            // MenuBuilder.UpdateGroupMenu(gh, mh);
            MenuBuilder.UpdateAllMenus(gh, mh);

            return(vehicle.id);
        }
Exemplo n.º 14
0
        internal static void UpdateMainMenu(GarageHandler gh, MenuHandler mh)
        {
            mh.menus.Remove("main");
            // var mainLabel = "Huvudmeny (" + Vehicle.NextId + ")";
            var mainLabel   = "Huvudmeny";
            var garageLabel = "Garage (" + gh.garages.Count + "st)";

            mh.AddMenu(new Menu("main", mainLabel, new List <MenuItem> {
                new MenuItem(garageLabel, new MenuAction(Route, "garageIndex")),
                new MenuItem("Grupper", new MenuAction(Route, "allGroupIndex")),
                // new MenuItem("Lista alla fordon (todo)",  new MenuAction(route, "vehicleIndex")),
                new MenuItem("Sök fordon", new MenuAction(Search, "regnr")),
                new MenuItem("Databas", new MenuAction(Route, "fileOptions")),
                new MenuItem("Avsluta utan att spara", new MenuAction(Quit))
            }));

            mh.menus.Remove("fileOptions");
            mh.AddMenu(new Menu("fileOptions", "Databasåtgärder", new List <MenuItem> {
                new MenuItem("Ladda från db", new MenuAction(Route, "load")),
                new MenuItem("Ladda testData", new MenuAction(Route, "reset")),
                new MenuItem("Töm", new MenuAction(Route, "clear")),
                new MenuItem("Spara till db", new MenuAction(Route, "save"))
            }));
        }
Exemplo n.º 15
0
        static void Main(string[] args)
        {
            var gh     = new GarageHandler();
            var mh     = new MenuHandler();
            var action = new MenuAction();
            var lastSelectedVehicle = 0;

            // var lastAction = action;

            MenuBuilder.UpdateAllMenus(gh, mh);

            do
            {
                switch (action.type)
                {
                case MenuBuilder.ActionType.Edit:
                    switch (action.data)
                    {
                    case "garage":
                        VehicleUI.RenameGarage(gh, mh);
                        break;

                    case "vehicle":
                        VehicleUI.EditVehicle(action.id, gh, mh);
                        break;
                    }
                    break;

                case MenuBuilder.ActionType.Delete:
                    switch (action.data)
                    {
                    case "garage":
                        VehicleUI.DeleteGarage(gh, mh);
                        break;

                    case "vehicle":
                        VehicleUI.DeleteVehicle(lastSelectedVehicle, gh, mh);
                        break;
                    }
                    break;

                case MenuBuilder.ActionType.Create:
                    switch (action.data)
                    {
                    case "garage":
                        VehicleUI.CreateGarage(gh, mh);
                        break;

                    case "vehicle":
                        var newId = VehicleUI.AddVehicle(gh, mh);
                        VehicleUI.EditVehicle(newId, gh, mh);
                        break;
                    }
                    break;

                case MenuBuilder.ActionType.Search:
                    if (action.data == "regnr")
                    {
                        VehicleUI.Search(gh, mh);
                    }
                    break;

                case MenuBuilder.ActionType.Route:
                    switch (action.data)
                    {
                    case "save":
                        gh.SaveToDb();
                        mh.current.Pop();
                        break;

                    case "load":
                        gh.LoadFromDb();
                        MenuBuilder.UpdateAllMenus(gh, mh);
                        mh.current.Pop();
                        break;

                    case "reset":
                        gh.LoadFromSample();
                        MenuBuilder.UpdateAllMenus(gh, mh);
                        mh.current.Pop();
                        break;

                    case "clear":
                        gh.FactoryEmptyGarage();
                        MenuBuilder.UpdateAllMenus(gh, mh);
                        mh.current.Pop();
                        break;

                    case "groupedVehicleIndex":
                        MenuBuilder.UpdateGroupResult(gh, mh, action.extra);
                        break;

                    default:          // Om man valt att gå in i en meny?
                        switch (mh.currentMenu.Name)
                        {
                        case "garageIndex":
                            gh.TrySetGarage(action.id);
                            MenuBuilder.UpdateVehicleMenu(gh, mh);
                            // mh.current.Pop(); // Glöm garagemenyn (hoppa direkt till huvudmenyn på tillbakavägen)
                            mh.current.Push("vehicleIndex");
                            break;
                        }
                        break;
                    }
                    mh.TryGotoMenu(action.data);
                    break;

                case MenuBuilder.ActionType.Back:
                    if (mh.current.Count > 1)
                    {
                        mh.GoBack();
                    }
                    else
                    {
                        action = new MenuAction(Quit, "save");
                    }
                    break;
                }

                // lastAction = action;

                if (action.type != Quit)
                {
                    action = ConsoleHelper.RenderMenu(mh.currentMenu);
                }
            } while (action.type != Quit);

            if (action.data == "save")
            {
                gh.SaveToDb();
            }

            Console.SetCursorPosition(0, Console.WindowHeight - 2);  // We're done
        }
Exemplo n.º 16
0
        // Todo: Ej klar! (det ska bli direkt-redigering i fordonsmenyn)
        internal static void EditVehicle(int id, GarageHandler gh, MenuHandler mh)
        {
            var vehicle = (Vehicle)gh.TryGetVehicle(id);

            if (vehicle == null)
            {
                ConsoleHelper.Announce("Kunde inte hitta fordonet med id " + id);
                return;
            }
            ;

            var action = new MenuAction(); // skrivs över
            int index  = 0;

            do
            {
                Menu editMenu = new Menu("vehicleEdit", "Redigerar fordon",
                                         new List <MenuItem> {
                    new MenuItem("Namn:  " + vehicle.name, new MenuAction(Noop, "namn")),
                    new MenuItem("Färg:  " + vehicle.color, new MenuAction(Noop, "color")),
                    new MenuItem("Vikt:  " + vehicle.weight, new MenuAction(Noop, "weight")),
                    new MenuItem("Regnr: " + vehicle.regnr, new MenuAction(Noop, "regnr")),
                    new MenuItem(""),
                    new MenuItem("Ta bort!", new MenuAction(Noop, "deleteVehicle"))
                });

                editMenu.lastIndex = index;

                action = ConsoleHelper.RenderMenu(editMenu);

                Console.ForegroundColor = ConsoleColor.Cyan;

                //index = Console.CursorTop;

                switch (action.data)
                {
                case "namn":
                    Console.SetCursorPosition(0, 3);
                    Console.WriteLine("Ändra namn");
                    Console.ForegroundColor = mh.settings.ActiveColor;
                    vehicle.name            = ConsoleHelper.EditQuestionText("Namn", vehicle.name);
                    index = 0;
                    break;

                case "color":
                    Console.SetCursorPosition(0, 3);
                    Console.WriteLine("Ändra färg");
                    Console.SetCursorPosition(0, 5);
                    Console.ForegroundColor = mh.settings.ActiveColor;
                    vehicle.color           = ConsoleHelper.EditQuestionText("Färg", vehicle.color);
                    index = 1;
                    break;

                case "weight":
                    Console.SetCursorPosition(0, 3);
                    Console.WriteLine("Ändra vikt");
                    Console.SetCursorPosition(0, 6);
                    Console.ForegroundColor = mh.settings.ActiveColor;
                    vehicle.weight          = ConsoleHelper.EditQuestionInt("Vikt", vehicle.weight);
                    index = 2;
                    break;

                case "regnr":
                    Console.SetCursorPosition(0, 3);
                    Console.WriteLine("Ändra regnr");
                    Console.SetCursorPosition(0, 7);
                    Console.ForegroundColor = mh.settings.ActiveColor;
                    vehicle.regnr           = ConsoleHelper.EditQuestionText("Regnr", vehicle.regnr);
                    index = 3;
                    break;

                case "deleteVehicle":
                    gh.TryDeleteVehicle(vehicle.id);
                    MenuBuilder.UpdateAllMenus(gh, mh);
                    return;
                }
                Console.ForegroundColor = mh.settings.PassiveColor;
                // ConsoleHelper.Announce("type(" + action.type + ") (" + action.data + ") "+ action.id);
            } while (action.type != MenuBuilder.ActionType.Back);

            MenuBuilder.UpdateVehicleMenu(gh, mh);
        }