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