internal static void AddVehicleFamily(string familyName)
 {
     if (AllVehicleFamilies.FirstOrDefault(x => x.Name == familyName) == null)
     {
         AllVehicleFamilies.Add(new VehicleFamily(familyName));
     }
 }
 internal static Dictionary <string, List <string> > GetVehicleNameGroupByFamily()
 {
     if (_allVehicleNamesGroupByFamily == null)
     {
         _allVehicleNamesGroupByFamily = AllVehicleFamilies.ToDictionary(g => g.Name, g => g.AllVehicles.Select(v => v.GetFullName()).ToList());
     }
     return(_allVehicleNamesGroupByFamily);
 }
 internal static List <string> GetAllFamilyNames()
 {
     if (_allFamilyNames == null)
     {
         _allFamilyNames = AllVehicleFamilies.Select(x => x.Name).ToList();
     }
     return(_allFamilyNames);
 }
        // Vehicle management
        internal static Vehicle AddVehicle(string familyName, string newVehicle, double _mass, string _note = "")
        {
            var     family = AllVehicleFamilies.FirstOrDefault(x => x.Name.Trim().ToLowerInvariant() == familyName.Trim().ToLowerInvariant());
            Vehicle v;

            if (family != null)
            {
                v = new Vehicle("", newVehicle, _mass, _note);
                family.AddVehicle(v);
                v.SetSubassemblyName(v.GetFullName());
                return(v);
            }
            return(null);
        }
        internal static bool VehicleAvailable(string familyName, string vehicleName, Vehicle vehicle = null)
        {
            var family = AllVehicleFamilies.FirstOrDefault(x => String.Equals(x.Name.Trim(), familyName.Trim(), StringComparison.OrdinalIgnoreCase));

            if (GetAllVehicles().Contains(vehicle))
            {
                return(true);
            }

            if (family != null)
            {
                return(family.AllVehicles.FirstOrDefault(x => String.Equals(x.Name.Trim(), vehicleName.Trim(), StringComparison.OrdinalIgnoreCase)) == null);
            }
            return(false);
        }
 internal static VehicleFamily GetVehicleFamily(string familyName)
 {
     return(AllVehicleFamilies.FirstOrDefault(x => String.Equals(x.Name.Trim(), familyName.Trim(), StringComparison.OrdinalIgnoreCase)));
 }
 internal static bool FamilyAvailable(string familyName)
 {
     return(AllVehicleFamilies.FirstOrDefault(x => String.Equals(x.Name.Trim(), familyName.Trim(), StringComparison.OrdinalIgnoreCase)) == null);
 }