private void ListAllWithProperty() { Console.Clear(); if (!GarageExist()) { return; } Console.WriteLine("What type of vehicle are you searching for?"); Console.WriteLine("1) Airplane"); Console.WriteLine("2) Boat"); Console.WriteLine("3) Bus"); Console.WriteLine("4) Car"); Console.WriteLine("5) Motorcycle"); Console.WriteLine("6) Any type"); var vehicleType = Console.ReadLine(); Console.WriteLine(); VehicleTypes vtVehicleType; Console.WriteLine("What property are you searching for?"); Console.WriteLine("1) Registration number"); Console.WriteLine("2) Number of wheels"); switch (vehicleType) { case "1": Console.WriteLine("3) Type of fuel"); Console.WriteLine("4) Number of seats"); Console.WriteLine("5) All airplanes"); vtVehicleType = VehicleTypes.Airplane; break; case "2": Console.WriteLine("3) Length"); Console.WriteLine("4) Cylinder volume"); Console.WriteLine("5) All boats"); vtVehicleType = VehicleTypes.Boat; break; case "3": Console.WriteLine("3) Type of fuel"); Console.WriteLine("4) Number of seats"); Console.WriteLine("5) All buses"); vtVehicleType = VehicleTypes.Bus; break; case "4": Console.WriteLine("3) Type of fuel"); Console.WriteLine("4) If it's a sports car"); Console.WriteLine("5) All cars"); vtVehicleType = VehicleTypes.Car; break; case "5": Console.WriteLine("3) Type of bike"); Console.WriteLine("4) Color of bike"); Console.WriteLine("5) All bikes"); vtVehicleType = VehicleTypes.Motorcycle; break; case "6": vtVehicleType = VehicleTypes.Vehicle; // All vehicles, have no extra properties to search for break; default: Console.WriteLine("No valid vehicle search selected. Back to main you go."); Console.WriteLine(); return; } var propertySelected = Console.ReadLine(); Console.WriteLine(); Properties ppProperty; string propertyValue = null; switch (vehicleType + " " + propertySelected) { case "1 1": // airplane + regnr case "2 1": // boat + regnr case "3 1": // bus + regnr case "4 1": // car + regnr case "5 1": // bike + regnr case "6 1": // ALL + regnr Console.Write("Enter registration number:"); ppProperty = Properties.RegNr; break; case "1 2": // airplane + nr of wheels case "2 2": // boat + nr of wheels case "3 2": // bus + nr of wheels case "4 2": // car + nr of wheels case "5 2": // bike + nr of wheels case "6 2": // all + nr of wheels Console.Write("Enter number of wheels:"); ppProperty = Properties.NrOfWheels; break; case "1 3": // airplane + type of fuel case "3 3": // bus + type of fuel case "4 3": // car + type of fuel Console.Write("Type of fuel:"); ppProperty = Properties.FuelType; break; case "1 4": // airplane + seats case "3 4": // bus + seats Console.Write("Number of seats:"); ppProperty = Properties.NrOfSeats; break; case "2 3": // boat + length Console.Write("Length of boat:"); ppProperty = Properties.Length; break; case "2 4": // boat + cylinder volume Console.Write("cc of cylinder volume:"); ppProperty = Properties.CylinderVolume; break; case "4 4": // car + is sports car //Console.Write("What type of car is it (Sport/Family):"); ppProperty = Properties.CarType; break; case "5 3": // bike + type Console.Write("Type of bike:"); ppProperty = Properties.Brand; break; case "5 4": // bike + color Console.Write("Color of bike:"); ppProperty = Properties.Color; break; case "1 5": // all airplanes case "2 5": // all boats case "3 5": // all buses case "4 5": // all cars case "5 5": // all bikes ppProperty = Properties.Any; break; default: Console.WriteLine("Not a valid entry. Back to main you go."); Console.WriteLine(); return; } if (vtVehicleType == VehicleTypes.Car && ppProperty == Properties.CarType) { try { propertyValue = AskOptions($"What type of car is it ({CarTypes.Sport}/{CarTypes.Family}): ", CarTypes.Sport.ToString(), CarTypes.Family.ToString()); } catch (Exception) { ErrorMessage("We do not accept funny answers. Back to main you go."); return; } Console.WriteLine(); } else if (ppProperty != Properties.Any) { propertyValue = Console.ReadLine(); Console.WriteLine(); } Console.Clear(); Console.WriteLine(valet.ListAllVehiclesWithProperty(vtVehicleType, ppProperty, propertyValue)); Console.WriteLine(); }