Пример #1
0
        private String WikipediaTambonTableEntry(Entity tambon, AmphoeDataForWikipediaExport amphoeData, String format, CultureInfo culture)
        {
            var subCounted = tambon.CountAllSubdivisions(_localGovernments);
            var muban      = 0;

            if (!subCounted.TryGetValue(EntityType.Muban, out muban))
            {
                muban = 0;
            }
            var citizen        = 0;
            var populationData = tambon.population.FirstOrDefault(x => x.Year == PopulationReferenceYear && x.source == PopulationDataSourceType.DOPA);

            if (populationData != null)
            {
                citizen = populationData.TotalPopulation.total;
            }
            var geocodeString = (tambon.geocode % 100).ToString(culture);

            if (tambon.geocode % 100 < 10)
            {
                geocodeString = "{{0}}" + geocodeString;
            }
            String mubanString;

            if (muban == 0)
            {
                mubanString = "-";
            }
            else if (muban < 10)
            {
                mubanString = "{{0}}" + muban.ToString(culture);
            }
            else
            {
                mubanString = muban.ToString();
            }
            var citizenString = citizen.ToString("###,##0", culture);

            for (int i = citizenString.Length; i < amphoeData.MaxPopulation.ToString("###,##0", culture).Length; i++)
            {
                citizenString = "{{0}}" + citizenString;
            }
            var romanizedName = tambon.english;
            var link          = String.Empty;

            if (amphoeData.WikipediaLinks.TryGetValue(tambon, out link))
            {
                romanizedName = WikiLink(link, romanizedName);
            }

            return(String.Format(culture, format, geocodeString, romanizedName, tambon.name, mubanString, citizenString));
        }
Пример #2
0
        private AmphoeDataForWikipediaExport CalculateAmphoeData(Entity entity, Language language)
        {
            if (entity.type.IsCompatibleEntityType(EntityType.Amphoe))
            {
                var result = new AmphoeDataForWikipediaExport();
                result.Province = _country.entity.FirstOrDefault(x => x.geocode == GeocodeHelper.ProvinceCode(entity.geocode));
                result.AllTambon.AddRange(entity.entity.Where(x => x.type.IsCompatibleEntityType(EntityType.Tambon) && !x.IsObsolete));
                result.LocalAdministrations.AddRange(entity.LocalGovernmentEntitiesOf(_localGovernments).Where(x => !x.IsObsolete));

                var allEntities = result.AllTambon.ToList();
                allEntities.AddRange(result.LocalAdministrations);
                if (CheckWikiData)
                {
                    foreach (var keyValuePair in RetrieveWikpediaLinks(allEntities, language))
                    {
                        result.WikipediaLinks[keyValuePair.Key] = keyValuePair.Value;
                    }
                }
                var counted = entity.CountAllSubdivisions(_localGovernments);
                if (!counted.ContainsKey(EntityType.Muban))
                {
                    counted[EntityType.Muban] = 0;
                }
                foreach (var keyValuePair in counted)
                {
                    result.CentralAdministrationCountByEntity[keyValuePair.Key] = keyValuePair.Value;
                }

                result.MaxPopulation = 0;
                foreach (var tambon in result.AllTambon)
                {
                    var populationData = tambon.population.FirstOrDefault(x => x.Year == PopulationReferenceYear && x.source == PopulationDataSourceType.DOPA);
                    if (populationData != null)
                    {
                        result.MaxPopulation = Math.Max(result.MaxPopulation, populationData.TotalPopulation.total);
                    }
                }

                foreach (var keyValuePair in Entity.CountSubdivisions(result.LocalAdministrations))
                {
                    result.LocalAdministrationCountByEntity[keyValuePair.Key] = keyValuePair.Value;
                }
                return(result);
            }
            else
            {
                return(null);
            }
        }
Пример #3
0
        private static String WikipediaLocalAdministrationTableEntry(
            Entity localEntity,
            AmphoeDataForWikipediaExport amphoeData,
            String entryLocal,
            String tambonCompleteSingular,
            String tambonCompletePlural,
            String tambonPartiallySingular,
            String tambonPartiallyPlural,
            String entryLocalCoverageOne,
            String entryLocalCoverageTwo,
            CultureInfo culture)
        {
            var result  = String.Empty;
            var english = localEntity.english;
            var link    = String.Empty;

            if (amphoeData.WikipediaLinks.TryGetValue(localEntity, out link))
            {
                english = WikiLink(link, english);
            }
            result += String.Format(culture, entryLocal, english, localEntity.FullName);
            if (localEntity.LocalGovernmentAreaCoverage.Any())
            {
                var coverage = localEntity.LocalGovernmentAreaCoverage.GroupBy(x => x.coverage).Select(group => new
                {
                    Coverage    = group.Key,
                    TambonCount = group.Count()
                });
                var textComplete  = String.Empty;
                var textPartially = String.Empty;

                if (coverage.Any(x => x.Coverage == CoverageType.completely))
                {
                    var completeTambon = localEntity.LocalGovernmentAreaCoverage.
                                         Where(x => x.coverage == CoverageType.completely).
                                         Select(x => amphoeData.Province.FlatList().FirstOrDefault(y => y.geocode == x.geocode));
                    var tambonString = String.Join(", ", completeTambon.Select(x => x.english));
                    if (coverage.First(x => x.Coverage == CoverageType.completely).TambonCount == 1)
                    {
                        textComplete = String.Format(culture, tambonCompleteSingular, tambonString);
                    }
                    else
                    {
                        textComplete = String.Format(culture, tambonCompletePlural, tambonString);
                    }
                }
                if (coverage.Any(x => x.Coverage == CoverageType.partially))
                {
                    var completeTambon = localEntity.LocalGovernmentAreaCoverage.
                                         Where(x => x.coverage == CoverageType.partially).
                                         Select(x => amphoeData.Province.FlatList().FirstOrDefault(y => y.geocode == x.geocode));
                    var tambonString = String.Join(", ", completeTambon.Select(x => x.english));
                    if (coverage.First(x => x.Coverage == CoverageType.partially).TambonCount == 1)
                    {
                        textPartially = String.Format(culture, tambonPartiallySingular, tambonString);
                    }
                    else
                    {
                        textPartially = String.Format(culture, tambonPartiallyPlural, tambonString);
                    }
                }
                if (!String.IsNullOrEmpty(textPartially) && !String.IsNullOrEmpty(textComplete))
                {
                    result += String.Format(culture, entryLocalCoverageTwo, textComplete, textPartially);
                }
                else
                {
                    result += String.Format(culture, entryLocalCoverageOne, textComplete + textPartially);
                }
            }
            result += Environment.NewLine;
            return(result);
        }