Beispiel #1
0
        public static List <Parkingspots> LoadFromFile(List <Parkingspots> mygarage) //Denna var också gräslig innan jag kom på hur jag skulle tänka och lägga upp det. Men tillslut så! :D
        {
            List <Parkingspots> parkinggarage = mygarage;

            try
            {
                using (StreamReader file = new StreamReader(Environment.CurrentDirectory + "Garage.txt"))
                {
                    string ln;

                    while ((ln = file.ReadLine()) != null)
                    {
                        if (!string.IsNullOrEmpty(ln))
                        {
                            var      VehicleData = ln.Split(',');
                            IVehicle vehicle;

                            string type          = VehicleData.FirstOrDefault(x => x.Contains(Const.type)).Split(Const.seporator)[1];
                            string identifier    = VehicleData.FirstOrDefault(x => x.Contains(Const.regnumber)).Split(Const.seporator)[1];
                            string VehicleIntime = VehicleData.FirstOrDefault(x => x.Contains(Const.intime)).Split(Const.seporator)[1];
                            string Id            = VehicleData.FirstOrDefault(x => x.Contains(Const.Id)).Split(Const.seporator)[1];
                            int    id            = Int32.Parse(Id);
                            if (type == "Car")
                            {
                                vehicle = new Car(identifier, type, VehicleIntime);

                                var space = mygarage.FirstOrDefault(x => x.GetId() == Convert.ToInt32(Id));
                                if (space != null) //måste finnas en plats för att parkera
                                {
                                    space.AddVehicleToSpot(vehicle);
                                }
                                else
                                {
                                }
                            }
                            else if (type == "Mc")
                            {
                                vehicle = new Mc(identifier, type, VehicleIntime);

                                var space = mygarage.FirstOrDefault(x => x.GetId() == Convert.ToInt32(Id));
                                if (space != null) //måste finnas en plats för att parkera
                                {
                                    space.AddVehicleToSpot(vehicle);
                                }
                            }
                        }
                    }
                    file.Close();
                }
            }
            catch (Exception)
            {
            }
            return(mygarage);
        }
Beispiel #2
0
        //Prag parking 2.0
        //Jag har lämnat kommentarer i koden på hur saker fungerar. En större summering av projektet och kursen och kommer vid inlämning
        //Dessa kommentarer är mitt försök att förklara simpelt vad som händer där de behövs.



        static void Main(string[] args)
        {
            //function för att kontrollera config
            if (ConfigParseCheck() == false)
            {
                Console.WriteLine("something seems to be wrong with you config. make sure you use numbers");
                Console.ReadKey();
            }

            var GarageSize             = int.Parse(ConfigurationManager.AppSettings["GARAGEsize"]);
            List <Parkingspots> Garage = new List <Parkingspots>(); //Skapar listan som används för Garaget

            for (int i = 1; i < GarageSize + 1; i++)                //Fyller den med tomma platser baserat på hur stort garage du vill ha. Ändra i config
            {
                var spot = new Parkingspots(i);
                Garage.Add(spot);
            }
            Garage = LoadFromFile(Garage); //Laddar sparade fordon



            while (true)                         //Körningen av application
            {
                WriteToFile(Garage);             //I början sparas alla ändringar som gjorts till sjävla listan som är garaget

                if (ConfigParseCheck() == false) //Självförklarande
                {
                    Console.WriteLine("something seems to be wrong with you config. make sure you use numbers");
                    Console.ReadKey();
                }

                //Eftersom variablerna har kontrollerats kan vi parsa dom. Felmeddelande kommer om upp ändringen orsaka fel.
                var Parkingsize            = int.Parse(ConfigurationManager.AppSettings["Parkingsize"]);
                var ChargeCar              = int.Parse(ConfigurationManager.AppSettings["PricePerHourCAR"]);
                var ChargeMC               = int.Parse(ConfigurationManager.AppSettings["PricePerHourMC"]);
                var CarSize                = int.Parse(ConfigurationManager.AppSettings["CARsize"]);
                var McSize                 = int.Parse(ConfigurationManager.AppSettings["MCsize"]);
                var FreeParkingTimeMinutes = int.Parse(ConfigurationManager.AppSettings["FreeParkingTimeMinutes"]);

                string Platenumber;
                int    freeslots = NumberOfFreeSlots(Garage, CarSize);

                Console.Clear();

                Console.WriteLine("Total number of spots: {0} \t\t//Prag Parking Application//" +
                                  "\nHourly Charge cars: {1}$", GarageSize, ChargeCar);

                Console.WriteLine("\n" +
                                  "Press 1 to Park Car\n" +
                                  "Press 2 to Park MC\n" +
                                  "Press 3 to Remove a Vehicle\n" +
                                  "Press 4 to Move\n\n" +
                                  "Press 6 to change Settings\n\n\n");


                FreeSpotsWrite(Garage, CarSize, McSize); //Kartan
                Console.WriteLine();

                Console.Write("Press number and press enter :");
                string selection = Console.ReadLine();

                switch (selection)
                {
                case "1":     //Park Car
                    Console.Clear();
                    Console.WriteLine("Enter Platenumber for the Car to park.\n ");
                    Platenumber = Console.ReadLine();
                    IVehicle car = new Car(Platenumber);     //Använder Ivehicle för att det ska vara lättare att lägga till i den nestade listan.

                    var spotForCar = IsGarageFull(Garage, car);
                    if (spotForCar != null)
                    {
                        spotForCar.AddVehicleToSpot(car);
                        Console.WriteLine("\nPark Car at spot #{0} ", spotForCar.GetId());
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Sry the Garage is Full.. Press any to continue");
                        Console.ReadLine();
                        break;
                    }
                    break;

                case "2":     //Park Mc
                    Console.Clear();
                    Console.WriteLine("Enter Platenumber for the MC to park.\n");
                    Platenumber = Console.ReadLine();
                    IVehicle mc = new Mc(Platenumber);

                    var spotForMC = IsGarageFull(Garage, mc);
                    if (spotForMC != null)
                    {
                        spotForMC.AddVehicleToSpot(mc);
                        Console.WriteLine("\nPark MC at #{0}", spotForMC.GetId());
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.Clear();

                        Console.WriteLine("Sry the Garage is Full");
                        Thread.Sleep(2000);
                    }
                    break;

                case "3":     //Remove/checkout Vehicle
                    Console.Clear();
                    Console.WriteLine("Enter Platenumber to remove..\n");

                    Platenumber = Console.ReadLine();
                    Parkingspots spot = SearchVehicle(Garage, Platenumber);

                    if (spot != null)
                    {
                        IVehicle vehicleToRemove = spot.RemoveVehicle(Platenumber);
                        if (vehicleToRemove != null)
                        {
                            DateTime currentTime      = DateTime.UtcNow;
                            TimeSpan duration         = currentTime.Subtract(vehicleToRemove.VechicleInTime);
                            var      totaltimeinhours = (((duration.TotalMinutes) - FreeParkingTimeMinutes) / 60);

                            if (vehicleToRemove is Car)
                            {
                                Console.WriteLine("\n| Drive Car: {0} from #{1} to the customer|\n", Platenumber, spot.GetId());
                                Console.WriteLine("|The Fee is ${0}|", ((double)totaltimeinhours * ChargeCar).ToString("0.00"));
                            }
                            if (vehicleToRemove is Mc)
                            {
                                Console.WriteLine("\n| Drive Mc: {0} from #{1} to the customer |\n", Platenumber, spot.GetId());
                                Console.WriteLine("|The Fee is ${0}", ((double)totaltimeinhours * ChargeMC).ToString("0.00"));
                            }

                            Console.ReadKey();
                        }
                        else
                        {
                            Console.WriteLine("Vehicle is not found in the Garage");
                        }
                        // Update list so it saves ... WriteToTheFile(Garage);
                    }
                    else
                    {
                        Console.WriteLine("Vehicle is not found in the Garage");
                    }
                    break;


                case "4":    //Move vehicle
                    Console.Clear();
                    Console.WriteLine("Enter platenumber to move..\n");
                    Platenumber = Console.ReadLine();

                    Parkingspots currentspot = SearchVehicle(Garage, Platenumber);

                    if (currentspot != null && Platenumber != null)
                    {
                        IVehicle vehicleToMove = currentspot.GetVehicles().FirstOrDefault(x => x.Identifier == Platenumber);      //Kopierar det första forden med det regnummret
                        Console.Clear();
                        Console.WriteLine("Enter number of the new parkingspot: ");
                        string newSpotNumber = Console.ReadLine();
                        var    Spot          = Garage.FirstOrDefault(x => x.GetId().ToString() == newSpotNumber); //hittar Id för nya platsen

                        if (Spot != null)
                        {
                            if (Spot.CanAdd(vehicleToMove.Size))     //kollar om det finns plats
                            {
                                if (vehicleToMove is Car)
                                {
                                    Console.WriteLine("Move Car:{2} from spot #{0} to new spot #{1}", currentspot.GetId(), Spot.GetId(), Platenumber);
                                    Thread.Sleep(2500);
                                }
                                else
                                {
                                    Console.WriteLine("Move Mc:{2} from spot #{0} to new spot #{1}", currentspot.GetId(), Spot.GetId(), Platenumber);
                                    Thread.Sleep(2500);
                                }
                                currentspot.RemoveVehicle(Platenumber);
                                Spot.AddVehicleToSpot(vehicleToMove);

                                // Update list so it saves ... WriteToTheFile(Garage);
                            }
                            else
                            {
                                Console.WriteLine("There is no space in your choosen parkingspot");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Cant find that parkingspot - might not exist");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Vehicle is not available in Garage");
                    }
                    break;

                case "6":
                    Console.Clear();
                    Console.WriteLine("What do you want to change?");
                    Console.WriteLine("1. Change Priceing\t\t Currently: {0} for cars and {6} for MC's\n" +
                                      "2. Change Free Parking time\t Currently: {1}\n" +
                                      "3. How big Car's are\t\t Current Size: {2}\n" +
                                      "4. How big MC's are\t\t Current Size: {3}\n" +
                                      "5. How big Parkingspots are\t Current Size: {4}\n" +
                                      "6. How many Parkingspot is in the Garage.\t Currently: {5}", ChargeCar, FreeParkingTimeMinutes
                                      , CarSize, McSize, Parkingsize, GarageSize, ChargeMC);


                    string choice;
                    choice = Console.ReadLine();

                    string x;
                    string setting;

                    switch (choice)     //Det tog mig sån tid att hitta hur jag skulle göra detta. Var ute på många äventyr för att pricka rätt... Detta tog längst tid av allt i projektet av någon anledning.
                                        //Sen kom jag på hur jag skulle göra och det blev lätt hehe.
                                        //Först var jag inne på att göra likadant som jag gjorde med Garage listan. Att typ variablerna skulle läsas in rad för rad från en textfil.
                                        //Men det kändes som det skulle finnas ett smidigare sätt och det fanns det med hjälp av 'using System.Configuration'
                                        //Skrev min egna enkla funktion. åhh swoosh! de funka! Så glad! -Jonatan
                    {
                    case "1":
                        Console.Clear();
                        Console.WriteLine("1. change hourly rate of cars\n" +
                                          "2. Change hourly rate of Mc's");
                        choice = Console.ReadLine();
                        switch (choice)
                        {
                        case "1":
                            Console.WriteLine("How much you wanna charge an hour for Cars?");
                            x       = Console.ReadLine();
                            setting = "PricePerHourCAR";

                            ChangeSetting(setting, x);            //
                            break;

                        case "2":
                            Console.WriteLine("How much you wanna charge an hour for MC's?");
                            x       = Console.ReadLine();
                            setting = "PricePerHourMC";

                            ChangeSetting(setting, x);
                            break;
                        }
                        break;

                    case "2":
                        Console.Clear();
                        Console.WriteLine("How many min of free parking do you want?");
                        x       = Console.ReadLine();
                        setting = "FreeParkingTimeMinutes";

                        ChangeSetting(setting, x);
                        break;

                    case "3":
                        Console.Clear();
                        Console.WriteLine("Size of car in program.\t\t #Relates to logic of calculating how many vehicles can fit in one spot");
                        x       = Console.ReadLine();
                        setting = "CARsize";

                        ChangeSetting(setting, x);
                        break;

                    case "4":
                        Console.Clear();
                        Console.WriteLine("Size of MC in program.\t\t #Relates to logic of calculating how many vehicles can fit in one spot");
                        x       = Console.ReadLine();
                        setting = "MCsize";

                        ChangeSetting(setting, x);

                        break;

                    case "5":
                        Console.Clear();
                        Console.WriteLine("Size of Parkingspace in program.\t\t #Relates to logic of calculating how many vehicles can fit in one spot");
                        x       = Console.ReadLine();
                        setting = "Parkingsize";

                        ChangeSetting(setting, x);

                        break;

                    case "6":
                        Console.Clear();
                        Console.WriteLine("So you are doing a remodeling of the entire garage?!?! Wow! Good! busy times!\n\n" +
                                          "How many parkingspots will your new garage have?\n" +
                                          "PS. Make sure no cars are hurt in your remodeling. Dont make the garage(list) smallar than the car parked in the highest index parkingslot.\n\n" +
                                          "new spots:");
                        x       = Console.ReadLine();
                        setting = "GARAGEsize";

                        ChangeSetting(setting, x);
                        break;
                    }
                    Console.ReadKey();

                    break;
                }
            }
        }