Example #1
0
        private String WikipediaTambonTableEntry(Entity tambon, AmphoeDataForWikipediaExport amphoeData, String format, CultureInfo culture)
        {
            var subCounted = CountSubdivisions(tambon);
            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 == PopulationDataSource);
            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);
        }
Example #2
0
        private AmphoeDataForWikipediaExport CalculateAmphoeData(Entity entity, Language language)
        {
            if ( entity.type.IsCompatibleEntityType(EntityType.Amphoe) )
            {
                var result = new AmphoeDataForWikipediaExport();
                result.Province = _baseEntity.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(LocalGovernmentEntitiesOf(entity).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 = CountSubdivisions(entity);
                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 == PopulationDataSource);
                    if ( populationData != null )
                    {
                        result.MaxPopulation = Math.Max(result.MaxPopulation, populationData.TotalPopulation.total);
                    }
                }

                foreach ( var keyValuePair in CountSubdivisions(result.LocalAdministrations) )
                {
                    result.LocalAdministrationCountByEntity[keyValuePair.Key] = keyValuePair.Value;
                }
                return result;
            }
            else
            {
                return null;
            }
        }
Example #3
0
        private 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;
        }