public static void SetGarage(Garage <Vehicle> g) { garage = g; }
static bool HandleInput(string input) { if (input == "") { Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop - 1); return(false); } char c = input.ToLower()[0]; switch (currentPage) { case Page.Empty: break; case Page.Main: switch (c) { // New garage case 'n': if (garage != null) { GenericMessage("Varning: det existerande garaget kommer att ersättas!", ConsoleColor.Red); } if (GetConfirmation("Är du säker på att du vill skapa ett nytt garage? (J/N)", color: ConsoleColor.Yellow)) { Console.ResetColor(); Console.Write("Ange antal platser i garaget: "); long limit = -1; int maxlimit = int.MaxValue; try { limit = long.Parse(Console.ReadLine()); } catch { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Felaktig inmatning!\n"); return(true); } Console.ForegroundColor = ConsoleColor.Yellow; if (limit < 1) { Console.WriteLine("Ett garage måste ha minst en plats!\n"); return(true); } else if (limit > maxlimit) { Console.WriteLine("Garaget kan maximalt ha {0} platser!\n", maxlimit); return(true); } try { garage = new Garage <Vehicle>((int)limit); } catch (OutOfMemoryException) { Console.WriteLine("Garaget är för stort för att rymmas i minnet!"); return(true); } catch (Exception e) { Console.WriteLine(e.Message); return(true); } Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("\nEtt nytt garage har skapats.\n"); } else { AbortedMessage(); } break; // Overview case 'ö': if (garage != null) { Console.WriteLine("\nÖversikt\n"); foreach (var what in Vehicle.GetValidTypes()) { var types = garage.Where(t => (string)t.GetType().GetProperty("Type").GetValue(t, null) == what); int count = types.Count(); if (count > 0) { Console.ForegroundColor = ConsoleColor.Gray; } else { Console.ForegroundColor = ConsoleColor.DarkGray; } Console.WriteLine("{0}x {1}", count, what); } Console.WriteLine(); int taken = garage.Count(); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Lediga platser: {0}", garage.Limit() - taken); Console.WriteLine("Upptagna platser: {0}", taken); Console.WriteLine("Totalt antal platser: {0}", garage.Limit()); Console.WriteLine(); } else { NullGarageError(); } break; // Show vehicles case 'v': if (garage != null) { Console.WriteLine("Fordon:\n"); DisplayVehicleInfo(garage.ToList(), true); } else { NullGarageError(); } break; // Search for vehicles case 's': if (garage != null) { if (garage.Count() == 0) { GenericMessage("Garaget är tomt!", ConsoleColor.Yellow); } else { SearchVehicles(); } } else { NullGarageError(); } break; // Add vehicle case 'l': if (garage != null) { if (garage.Count() == garage.Limit()) { GenericMessage("Garaget är fullt!", ConsoleColor.Yellow); } else { Console.WriteLine("\nVälj typ av fordon att lägga till:"); int count = DisplayNumberedList(Vehicle.GetValidTypes()); AbortOptionMessage(); int sel = GetNumber(0, count); if (sel > 0) { Type vehtype = HelperMethods.GetDerivedConcreteClasses(typeof(Vehicle)).ElementAt(sel - 1); //Console.WriteLine(vehtype); var obj = (Vehicle)vehtype.InvokeMember("Create", BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public, null, null, null); //Console.WriteLine(obj); if (GetValidFields(obj)) { GenericMessage("\nFordonet lades till!\n", ConsoleColor.White); garage.Add(obj); } } else { AbortedMessage(); } } } else { NullGarageError(); } break; // Remove vehicle case 't': if (garage != null) { if (garage.Count() == 0) { GenericMessage("Garaget är tomt!", ConsoleColor.Yellow); } else { Console.WriteLine("\nVälj ett fordon att ta bort:"); int count = DisplayNumberedList(MakeVehicleList()); AbortOptionMessage(); int sel = GetNumber(0, count); if (sel > 0) { var veh = garage.ElementAt(sel - 1); if (GetConfirmation(string.Format("Vill du ta bort {0} med reg. nr. {1}? (J/N)", veh.Type, veh.Registration))) { GenericMessage("Fordonet togs bort!\n", ConsoleColor.White); garage.Remove(veh); } else { AbortedMessage(); } } } } else { NullGarageError(); } break; // Quit case 'x': if (GetConfirmation("Är du säker på att du vill avsluta? (J/N)")) { Environment.Exit(0); } break; default: InvalidSelectionError(); break; } break; default: throw new NotImplementedException(); } return(true); }