コード例 #1
0
        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();
        }