Beispiel #1
0
        /// <summary>
        /// Gets the universities based on a US State
        /// </summary>
        /// <param name="state">Either the name or the postal code.</param>
        /// <returns></returns>
        public static AmericanUniversity[] GetUniversitiesByState(string state)
        {
            UnivXml = UnivXml ?? Core.XmlDocXrefIdentifier.GetEmbeddedXmlDoc(US_UNIVERSITY_DATA,
                                                                             Assembly.GetExecutingAssembly());
            //this will never pass so avoid the exception
            if (UnivXml == null)
            {
                return new AmericanUniversity[] { }
            }
            ;

            if (String.IsNullOrWhiteSpace(state))
            {
                _allStateAbbreviations = _allStateAbbreviations ?? GetAllXmlStateAbbreviations(UnivXml);

                state = GetRandomStateAbbrev(_allStateAbbreviations);
            }

            var qryBy = "name";

            if (state.Length == 2)
            {
                qryBy = "abbreviation";
            }
            else
            {
                state = string.Join(" ", NfString.DistillToWholeWords(state));
            }

            var elements =
                UnivXml.SelectSingleNode($"//state[@{qryBy}='{state}']");

            if (elements == null || !elements.HasChildNodes)
            {
                return new AmericanUniversity[] { }
            }
            ;

            var tempList = new List <AmericanUniversity>();

            foreach (var elem in elements)
            {
                if (TryParseXml(elem as XmlElement, out var univOut))
                {
                    univOut.StateName = state;
                    tempList.Add(univOut);
                }
            }

            if (tempList.Count == 0)
            {
                return new AmericanUniversity[] { }
            }
            ;

            return(tempList.ToArray());
        }
Beispiel #2
0
        public static AmericanUniversity RandomUniversity(string state = null)
        {
            IUniversity univ = null;
            int         pick;

            //pick a univ from the home state
            if (!string.IsNullOrWhiteSpace(state))
            {
                var stateUnivs = GetUniversitiesByState(state);

                if (stateUnivs.Any())
                {
                    pick = Etx.RandomInteger(0, stateUnivs.Length - 1);
                    univ = stateUnivs[pick];
                }
            }

            if (univ == null)
            {
                //pick a university from anywhere in the US
                UnivXml = UnivXml ?? XmlDocXrefIdentifier.GetEmbeddedXmlDoc(US_UNIVERSITY_DATA,
                                                                            Assembly.GetExecutingAssembly());
                var allUnivs = UnivXml?.SelectNodes("//state");
                if (allUnivs == null)
                {
                    return(null);
                }
                pick = Etx.RandomInteger(0, allUnivs.Count - 1);
                if (!(allUnivs[pick] is XmlElement randUnivXml) || !randUnivXml.HasChildNodes)
                {
                    return(null);
                }
                pick = Etx.RandomInteger(0, randUnivXml.ChildNodes.Count - 1);
                if (!(randUnivXml.ChildNodes[pick] is XmlElement univXmlNode))
                {
                    return(null);
                }
                if (TryParseXml(univXmlNode, out var univOut))
                {
                    univ = univOut;
                }
            }
            return((AmericanUniversity)univ);
        }