public static string TitleForType(OptionalColumnType type) { switch (type) { case OptionalColumnType.CustomProp: case OptionalColumnType.None: return(string.Empty); case OptionalColumnType.Complex: return(Resources.Makes.IsComplex); case OptionalColumnType.Retract: return(Resources.Makes.IsRetract); case OptionalColumnType.Tailwheel: return(Resources.Makes.IsTailwheel); case OptionalColumnType.HighPerf: return(Resources.Makes.IsHighPerf); case OptionalColumnType.TAA: return(Resources.Makes.IsTAA); case OptionalColumnType.Turbine: return(Resources.Makes.IsTurbine); case OptionalColumnType.Jet: return(Resources.Makes.IsJet); case OptionalColumnType.TurboProp: return(Resources.Makes.IsTurboprop); case OptionalColumnType.ASEL: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.ASEL).CatClass); case OptionalColumnType.AMEL: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.AMEL).CatClass); case OptionalColumnType.ASES: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.ASES).CatClass); case OptionalColumnType.AMES: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.AMES).CatClass); case OptionalColumnType.Glider: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.Glider).CatClass); case OptionalColumnType.Helicopter: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.Helicopter).CatClass); case OptionalColumnType.ATD: case OptionalColumnType.FTD: case OptionalColumnType.FFS: return(type.ToString()); } throw new ArgumentOutOfRangeException(nameof(type), "Unknown OptionalColumnType: " + type.ToString()); }
/// <summary> /// Given an array of makes, finds the subset that seem to match the modelname presented /// </summary> /// <param name="rgMakes">The input array of models</param> /// <param name="szModelName">The string (e.g., "C-172") for the modelname</param> /// <returns>A list of potential matches</returns> public static Collection <MakeModel> MatchingMakes(IEnumerable <MakeModel> rgMakes, string szModelName) { if (rgMakes == null) { throw new ArgumentNullException("rgMakes"); } List <MakeModel> lst = new List <MakeModel>(); foreach (MakeModel mm in rgMakes) { if (mm.NormalSearchString.Contains(szModelName)) { lst.Add(mm); } } lst.Sort((mm1, mm2) => { // Primary sort: allowed types (sim only, etc.) if (mm1.AllowedTypes != mm2.AllowedTypes) { return((int)mm1.AllowedTypes - (int)mm2.AllowedTypes); } // Secondary - category/class WITHIN A CATEGORY. E.g., prefer ASEL over ASES, for example, within airplane. CategoryClass cc1 = CategoryClass.CategoryClassFromID(mm1.CategoryClassID); CategoryClass cc2 = CategoryClass.CategoryClassFromID(mm2.CategoryClassID); if (cc1.Category.CompareOrdinalIgnoreCase(cc2.Category) == 0 && mm1.CategoryClassID != mm2.CategoryClassID) { return((int)mm1.CategoryClassID - (int)mm2.CategoryClassID); } // prefer a match in the model name over a match in another part bool fM1MatchesModel = mm1.NormalModel.Contains(szModelName); bool fM2MatchesModel = mm2.NormalModel.Contains(szModelName); if (fM1MatchesModel && !fM2MatchesModel) { return(-1); } else if (!fM1MatchesModel && fM2MatchesModel) { return(1); } else if (fM1MatchesModel && fM2MatchesModel) // both match - pick the shorter one since it's likely the more generic match (e.g., "C-172" vs. "C-172N", or R-22 vs. SR22) { return(mm1.NormalModel.Length - mm2.NormalModel.Length); } else { return(String.Compare(mm1.DisplayName, mm2.DisplayName, StringComparison.CurrentCultureIgnoreCase)); // fall through to alphabetic search. } }); return(new Collection <MakeModel>(lst)); }
/// <summary> /// Validates the integrity of the make/model object /// </summary> /// <returns></returns> public Boolean FIsValid() { try { CategoryClass cc = CategoryClass.CategoryClassFromID(CategoryClassID); Manufacturer m = new Manufacturer(ManufacturerID); if (ArmyMDS.Length > 40) { throw new MyFlightbookException(String.Format(CultureInfo.CurrentCulture, Resources.Makes.errMDSTooLong, ArmyMDS)); } if (IsCertifiedSinglePilot && (!EngineType.IsTurbine() || String.IsNullOrEmpty(TypeName))) { throw new MyFlightbookException(Resources.Makes.errSinglePilotButNotTypeRated); } } catch (MyFlightbookException ex) { ErrorString = ex.Message; return(false); } return(true); }
public static string TitleForType(OptionalColumnType type) { switch (type) { case OptionalColumnType.CustomProp: case OptionalColumnType.None: return(string.Empty); case OptionalColumnType.Complex: return(Resources.Makes.IsComplex); case OptionalColumnType.Retract: return(Resources.Makes.IsRetract); case OptionalColumnType.Tailwheel: return(Resources.Makes.IsTailwheel); case OptionalColumnType.HighPerf: return(Resources.Makes.IsHighPerf); case OptionalColumnType.TAA: return(Resources.Makes.IsTAA); case OptionalColumnType.Turbine: return(Resources.Makes.IsTurbine); case OptionalColumnType.Jet: return(Resources.Makes.IsJet); case OptionalColumnType.TurboProp: return(Resources.Makes.IsTurboprop); case OptionalColumnType.ASEL: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.ASEL).CatClass); case OptionalColumnType.AMEL: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.AMEL).CatClass); case OptionalColumnType.ASES: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.ASES).CatClass); case OptionalColumnType.AMES: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.AMES).CatClass); case OptionalColumnType.Glider: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.Glider).CatClass); case OptionalColumnType.Helicopter: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.Helicopter).CatClass); case OptionalColumnType.Gyroplane: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.Gyroplane).CatClass); case OptionalColumnType.HotAirBalloon: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.HotAirBalloon).CatClass); case OptionalColumnType.GasBalloon: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.GasBalloon).CatClass); case OptionalColumnType.UAS: return(CategoryClass.CategoryClassFromID(CategoryClass.CatClassID.UnmannedAerialSystem).CatClass); case OptionalColumnType.ATD: case OptionalColumnType.FTD: case OptionalColumnType.FFS: return(type.ToString()); case OptionalColumnType.CrossCountry: return(Resources.LogbookEntry.PrintHeaderCrossCountry); } throw new ArgumentOutOfRangeException(nameof(type), "Unknown OptionalColumnType: " + type.ToString()); }