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); }
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; } }
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; }