Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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());
        }