예제 #1
0
        static void Main(string[] args)
        {
            GarageHandler       gh = new GarageHandler();
            ApplicationIOStream io = new ApplicationIOStream("C:/Users/elev/Documents/Visual Studio 2013/Projects/GarageApplication/GarageApplication");

            io.Load();

            if (io.FoundLoadableFile)
            {
                gh.AddGarage(io.GarageName, io.GarageMaxSize);

                foreach (var item in io.VehicleSpecs)
                {
                    gh.AddNewVehicleToGarage(item);
                }
            }

            while (true)
            {
                Console.WriteLine("Welcome to the garage. Choose between the options below:\n");
                Console.WriteLine("1. {0}\n2. {1}\n3. {2}\n4. {3}\n0. {4}\n", "View garage.", "Add new garage.", "Save garage.", "Delete saved garage.", "Exit Application.");

                int option = BaseLogic.CheckInput(Console.ReadLine(), "int");
                Console.Clear();
                switch (option)
                {
                case 1:
                    if (gh.Garage == null)
                    {
                        Console.WriteLine("There is no garage in the system. Please create a new garage first!");
                        Console.ReadKey();
                        break;
                    }

                    while (true)
                    {
                        Console.WriteLine("Welcome to {0} garage!\n", gh.Garage.GarageName);
                        Console.WriteLine("1. {0}\n2. {1}\n3. {2}\n4. {3}\n0. {4}\n", "View vehicles in garage.", "Add new vehicle.", "Remove vehicle.", "Search for vechicles.", "Go back to main menu.");

                        option = BaseLogic.CheckInput(Console.ReadLine(), "int");
                        Console.Clear();

                        if (option == 0)
                        {
                            break;
                        }

                        switch (option)
                        {
                        case 1:
                            Console.WriteLine(gh.ViewAllVehicles());
                            Console.ReadKey();
                            break;

                        case 2:
                            Dictionary <string, dynamic> VehicleInformation = new Dictionary <string, dynamic>();

                            Console.WriteLine("Add new vehicle to the garage.\n0. Go back.\n");

                            Console.Write("What vehicle type do you want to add?\n(Car, Buss, Boat, Airplane, Motorcycle): ");
                            string vehicleType = BaseLogic.CheckInput(Console.ReadLine(), "string", false, new List <string> {
                                "car", "buss", "boat", "airplane", "motorcycle", "0"
                            });

                            if (vehicleType == "0")
                            {
                                break;
                            }

                            VehicleInformation.Add("Type", vehicleType);

                            Console.Write("\nEnter vehicle name: ");
                            string vehicleName = BaseLogic.CheckInput(Console.ReadLine(), "string", true);
                            VehicleInformation.Add("Name", vehicleName);

                            string vehicleRegNum = "";
                            do
                            {
                                Console.Write("\nEnter vehicle reg-num: ");
                                vehicleRegNum = BaseLogic.CheckInput(Console.ReadLine(), "string", true);

                                if (vehicleRegNum.Length == 6)
                                {
                                    if (!gh.CarExists(vehicleRegNum))
                                    {
                                        VehicleInformation.Add("RegNumber", vehicleRegNum);
                                    }
                                    else
                                    {
                                        Console.WriteLine("There is already a vehicle with reg-num {0} in the garage!", vehicleRegNum);
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("Reg-num must be of six characters.");
                                }
                            } while (!(!gh.CarExists(vehicleRegNum) && vehicleRegNum.Length == 6));

                            Console.Write("\nEnter vehicle color: ");
                            string vehicleColor = BaseLogic.CheckInput(Console.ReadLine(), "string");
                            VehicleInformation.Add("Color", vehicleColor);

                            Console.Write("\nEnter number of tires on vehicle: ");
                            int vehicleNumTires = BaseLogic.CheckInput(Console.ReadLine(), "int");
                            VehicleInformation.Add("NumberOfTires", vehicleNumTires);

                            int vehicleModleYear = 0;
                            do
                            {
                                Console.Write("\nEnter vehicle model year: ");
                                vehicleModleYear = BaseLogic.CheckInput(Console.ReadLine(), "int");

                                if (vehicleModleYear > 0)
                                {
                                    VehicleInformation.Add("ModelYear", vehicleModleYear);
                                }
                                else
                                {
                                    Console.WriteLine("Model year must be greater then year 0.");
                                }
                            } while (vehicleModleYear <= 0);

                            Console.Write("\nDo you need a licens to drive this vehicle? (Y/N): ");
                            char vehicleLicens = BaseLogic.CheckInput(Console.ReadLine(), "char", false, new List <string> {
                                "y", "Y", "n", "N"
                            });
                            bool vehicleLicensNeeded;

                            if (vehicleLicens == 'y')
                            {
                                vehicleLicensNeeded = true;
                            }
                            else
                            {
                                vehicleLicensNeeded = false;
                            }

                            VehicleInformation.Add("NeedLicens", vehicleLicensNeeded);

                            Console.Clear();
                            Console.WriteLine("All information entered.\nDo you want to add the new {0} \"{1}\" to the garage? (Y/N)", vehicleType, vehicleName);

                            char addNew = BaseLogic.CheckInput(Console.ReadLine(), "char", false, new List <string> {
                                "y", "Y", "n", "N"
                            });
                            if (addNew == 'y')
                            {
                                Console.Clear();
                                gh.AddNewVehicleToGarage(VehicleInformation);

                                Console.WriteLine("New {0} \"{1}\" added to the garage!", vehicleType, vehicleName);
                                Console.ReadKey();
                            }
                            break;

                        case 3:
                            if (gh.Garage.VehiclesInGarage.Count() <= 0)
                            {
                                Console.WriteLine("There are no vehicle in he garage to be removed!");
                                Console.ReadKey();
                                break;
                            }

                            Console.WriteLine("Enter the reg-num of the vehicle you want to remove.\n0. Go back.\n");
                            string regnum = BaseLogic.CheckInput(Console.ReadLine(), "string");
                            Console.Clear();

                            if (regnum == "0")
                            {
                                break;
                            }
                            else if (gh.RemoveVehicle(regnum))
                            {
                                Console.WriteLine("Vehicle successfully removed!");
                            }
                            else
                            {
                                Console.WriteLine("No vehicle was found with that reg-number.");
                            }

                            Console.ReadKey();
                            break;

                        case 4:
                            if (gh.Garage.VehiclesInGarage.Count() <= 0)
                            {
                                Console.WriteLine("There are no vehicle in he garage to be searched for!");
                                Console.ReadKey();
                                break;
                            }

                            Console.WriteLine("How do you want to search?\n");
                            Console.WriteLine("1. {0}\n2. {1}\n3. {2}\n0. {3}\n", "By name.", "By reg-num.", "By Color.", "Go back to garage view.");

                            option = BaseLogic.CheckInput(Console.ReadLine(), "int");
                            Console.Clear();

                            if (option == 0)
                            {
                                break;
                            }

                            Console.Write("Enter searchterm: ");

                            string searchTerm = BaseLogic.CheckInput(Console.ReadLine(), "string", true);
                            string res        = "";

                            switch (option)
                            {
                            case 1:
                                res = gh.SearchForVehicle("Name", searchTerm);
                                break;

                            case 2:
                                res = gh.SearchForVehicle("RegNumber", searchTerm);
                                break;

                            case 3:
                                res = gh.SearchForVehicle("Color", searchTerm);
                                break;

                            default:
                                break;
                            }

                            Console.Clear();
                            Console.WriteLine(res);
                            Console.ReadKey();

                            break;

                        default:
                            break;
                        }

                        Console.Clear();
                    }
                    break;

                case 2:
                    if (gh.Garage != null)
                    {
                        Console.WriteLine("There is already a garage named \"{0}\" in the system.\nDo you want to override it? (Y/N)", gh.Garage.GarageName);
                        char overrideGarage = BaseLogic.CheckInput(Console.ReadLine(), "char", false, new List <string> {
                            "y", "Y", "n", "N"
                        });

                        Console.Clear();
                        if (overrideGarage == 'n')
                        {
                            break;
                        }
                    }

                    Console.WriteLine("What is the name of the garage?\n");
                    string garageName = BaseLogic.CheckInput(Console.ReadLine(), "string");
                    Console.Clear();

                    bool addGarage = gh.AddGarage(garageName);
                    if (addGarage)
                    {
                        Console.WriteLine("New garage \"" + garageName + "\" added!");
                    }
                    else
                    {
                        Console.WriteLine("Could not add the new garage to the application. Please try again!");
                    }

                    Console.ReadKey();
                    break;

                case 3:
                    if (gh.Garage != null)
                    {
                        bool saved = io.Save(gh.Garage);

                        Console.Clear();
                        if (saved)
                        {
                            Console.WriteLine("Garage has been saved!");
                        }
                        else
                        {
                            Console.WriteLine("Garage could not be saved.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("No garage exists, please create a new garage before saving.");
                    }

                    Console.ReadKey();
                    break;

                case 4:
                    Console.WriteLine("Are you sure you want to delete this garage? (Y/N)");
                    option = BaseLogic.CheckInput(Console.ReadLine(), "char", false, new List <string> {
                        "y", "Y", "n", "N"
                    });

                    if (option == 'y')
                    {
                        bool removed = io.RemoveData(gh.Garage.GarageName);

                        if (removed)
                        {
                            Console.WriteLine("Database removed! Running local temp system.");
                        }
                        else
                        {
                            Console.WriteLine("Could not remove database, please try again!");
                        }

                        Console.ReadKey();
                    }

                    break;

                case 0:
                    Environment.Exit(0);
                    break;

                default:
                    break;
                }

                Console.Clear();
            }
        }
예제 #2
0
        public void Load()
        {
            string path = this.IO_dir + this.Database_loc;

            if (!Directory.EnumerateFileSystemEntries(path).Any())
            {
                return;
            }

            DirectoryInfo di            = new DirectoryInfo(path);
            string        FirstFileName =
                di.GetFiles()
                .Select(f => f.Name)
                .FirstOrDefault(name => name != null);


            if ((FirstFileName.Length > 0) && (FirstFileName.Split('.').Last() == "garage"))
            {
                FoundLoadableFile = true;
                VehicleSpecs      = new List <Dictionary <string, dynamic> >();

                StreamReader sr = new StreamReader(path + FirstFileName);
                Dictionary <string, dynamic> tmp = new Dictionary <string, dynamic>();
                string line;

                while ((line = sr.ReadLine()) != null)
                {
                    if (line.Length <= 0 || line[0] == '#')
                    {
                        continue;
                    }
                    else if (line[0] == '~')
                    {
                        VehicleSpecs.Add(tmp);
                        tmp = new Dictionary <string, dynamic>();
                        continue;
                    }

                    string[] l = line.Split('=');
                    l[1].Trim();

                    switch (l[0].Trim())
                    {
                    case "GarageName":
                        this.GarageName = l[1];
                        break;

                    case "GarageMaxAmount":
                        this.GarageMaxSize = BaseLogic.CheckInput(l[1], "int");
                        break;

                    case "Type":
                        tmp.Add("Type", l[1]);
                        break;

                    case "Name":
                        tmp.Add("Name", l[1]);
                        break;

                    case "RegNumber":
                        tmp.Add("RegNumber", l[1]);
                        break;

                    case "Color":
                        tmp.Add("Color", l[1]);
                        break;

                    case "NumberOfTires":
                        tmp.Add("NumberOfTires", BaseLogic.CheckInput(l[1], "int"));
                        break;

                    case "ModelYear":
                        tmp.Add("ModelYear", BaseLogic.CheckInput(l[1], "int"));
                        break;

                    case "NeedLicens":
                        tmp.Add("NeedLicens", bool.Parse(l[1]));
                        break;

                    default:
                        break;
                    }
                }

                sr.Close();
            }
        }