/// <summary> /// Generate dbo.Country. Write your time consuming task here /// </summary> /// <param name="s"></param> public void LTT_CountryCode(string s) { using (var ctx = new RT2020Entities()) { ctx.Configuration.LazyLoadingEnabled = false; #region Generate missing dbo.Country from VWG.Community.Util.CountryCodes var dboCounttries = ctx.Country.ToList(); var ccodes = new CountryCodes(); var codelist = ccodes.GetList(); OpenCC.Load(); using (var scope = ctx.Database.BeginTransaction()) { try { foreach (var item in codelist) { //! CountryCode = ISO3166_1_Alpha_2,CountryName = CLDR_displayname if (item.ISO3166_1_Alpha_2 == String.Empty) { continue; } // 2020.11.25 paulus: 再改番用 ISO3166_1_Alpha_2 //var exist = ctx.Country.Where(x => x.CountryCode == item.FIPS).FirstOrDefault(); var exist = ctx.Country.Where(x => x.CountryCode == item.ISO3166_1_Alpha_2).FirstOrDefault(); if (exist == null) { exist = new Country(); exist.CountryId = Guid.NewGuid(); exist.CountryCode = item.ISO3166_1_Alpha_2; exist.CountryName = item.CLDR_displayname; if (!String.IsNullOrEmpty(item.official_name_cn)) { exist.CountryName_Chs = item.official_name_cn; exist.CountryName_Cht = OpenCC.Convert(item.official_name_cn, OpenCCType.s2hk.ToString("g")); } ctx.Country.Add(exist); ctx.SaveChanges(); } else { exist.CountryName = item.CLDR_displayname; exist.CountryName_Chs = item.official_name_cn; exist.CountryName_Cht = OpenCC.Convert(item.official_name_cn, OpenCCType.s2hk.ToString("g")); ctx.SaveChanges(); } _CurrentItem = exist.CountryName; } scope.Commit(); } catch { scope.Rollback(); } } #endregion } }
public static void GenMemberPhoneNumbers(Guid id) { using (var ctx = new RT2020Entities()) { ctx.Configuration.LazyLoadingEnabled = false; #region Generate random phone numbers for each Member var mbrAddresses = ctx.MemberAddress.Where(x => x.PhoneTag1Value != "" || x.PhoneTag2Value != "").ToList(); var counts = mbrAddresses.Count(); if (counts > 0) { var ccodes = new CountryCodes(); var codelist = ccodes.GetList(); //using (var scope = ctx.Database.BeginTransaction()) //{ try { //List<String> uniqueCountries = new List<string>(); int i = 0; foreach (var item in mbrAddresses) { #region 用 random gen phone number 取代原有嘅 phone number /** 假設條件(address 先決): * 0. 冇地址,當 others * 1. 非 ASCII 地址就係中國 * 2. 由 Address 找到所屬 Country,分為:中國﹑香港﹑其他 * 3. 如果 match 唔倒,當係 香港 */ String currentCountry = "", number1 = "", number2 = "", number3 = "", number4 = "", number5 = ""; currentCountry = (String.IsNullOrEmpty(item.Address)) ? "" : IsChinese(item.Address) ? "china" : StripCountry(item.Address); // 非 ASCII 地址就係中國 if (currentCountry != String.Empty) { #region 地址 currentCountry = currentCountry.ToLower().Replace(".", ""); var isoCountry = ccodes.FindByDisplayName(currentCountry); // 由 Address 找到所屬 Country var found = isoCountry != null ? true : false; if (!found) // match 唔倒,當係 香港 { currentCountry = "hong kong"; isoCountry = ccodes.FindByISO3166_Alpha3("HKG"); //! 應該加埋:FindByISO3166_Alpha2,可惜 :( } else { currentCountry = isoCountry.CLDR_displayname.ToLower(); } var dboCountry = ctx.Country.Where(x => x.CountryCode == isoCountry.FIPS).FirstOrDefault(); #region get random Phone Numbers into: number1 number2 switch (isoCountry.FIPS) { case "CN": number1 = (item.PhoneTag1Value.Trim() != String.Empty) ? GetRandomPhoneNumber_CN() : ""; number2 = (item.PhoneTag2Value.Trim() != String.Empty) ? GetRandomPhoneNumber_CN() : ""; number3 = (item.PhoneTag3Value.Trim() != String.Empty) ? GetRandomPhoneNumber_CN() : ""; number4 = (item.PhoneTag4Value.Trim() != String.Empty) ? GetRandomPhoneNumber_CN() : ""; number5 = (item.PhoneTag5Value.Trim() != String.Empty) ? GetRandomPhoneNumber_CN() : ""; break; case "HK": number1 = (item.PhoneTag1Value.Trim() != String.Empty) ? GetRandomPhoneNumber_HK() : ""; number2 = (item.PhoneTag2Value.Trim() != String.Empty) ? GetRandomPhoneNumber_HK() : ""; number3 = (item.PhoneTag3Value.Trim() != String.Empty) ? GetRandomPhoneNumber_HK() : ""; number4 = (item.PhoneTag4Value.Trim() != String.Empty) ? GetRandomPhoneNumber_HK() : ""; number5 = (item.PhoneTag5Value.Trim() != String.Empty) ? GetRandomPhoneNumber_HK() : ""; break; default: number1 = (item.PhoneTag1Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number2 = (item.PhoneTag2Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number3 = (item.PhoneTag3Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number4 = (item.PhoneTag4Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number5 = (item.PhoneTag5Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; break; } #endregion if (dboCountry != null) { item.CountryId = dboCountry.CountryId; } item.PhoneTag1Value = number1; item.PhoneTag2Value = number2; item.PhoneTag3Value = number3; item.PhoneTag4Value = number4; item.PhoneTag5Value = number5; /** Code used in debugging * var inList = uniqueCountries.Where(x => x == currentCountry).FirstOrDefault(); * if (inList == null) uniqueCountries.Add(currentCountry); */ #endregion } else { #region 冇地址 number1 = (item.PhoneTag1Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number2 = (item.PhoneTag2Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number3 = (item.PhoneTag3Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number4 = (item.PhoneTag4Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; number5 = (item.PhoneTag5Value.Trim() != String.Empty) ? GetRandomPhoneNumber_Others() : ""; item.PhoneTag1Value = number1; item.PhoneTag2Value = number2; item.PhoneTag3Value = number3; item.PhoneTag4Value = number4; item.PhoneTag5Value = number5; #endregion } //ctx.BulkSaveChanges(options => options.BatchSize = 100); #endregion i++; #region SaveChanges each batch: say 100 if ((i % 100) == 0) { ctx.BulkSaveChanges(); // uncomment for debugging //if (i >= 50) break; } #endregion } if (ctx.ChangeTracker.HasChanges()) { ctx.BulkSaveChanges(); } //scope.Commit(); } catch (Exception ex) { //scope.Rollback(); throw ex; } //} } #endregion } }
/// <summary> /// 將費時嘅工序放喺呢度做 /// </summary> /// <param name="s"></param> public void LTT_MemberPhoneNumber(string s) { // Write your time consuming task here using (var ctx = new RT2020Entities()) { ctx.Configuration.LazyLoadingEnabled = false; #region Generate random phone numbers for each Member var mbrAddresses = ctx.MemberAddress.Where(x => x.PhoneTag1Value != "" || x.PhoneTag2Value != ""); var counts = mbrAddresses.Count(); if (counts > 0) { OpenCC.Load(); var ccodes = new CountryCodes(); var codelist = ccodes.GetList(); using (var scope = ctx.Database.BeginTransaction()) { try { List <String> countries = new List <string>(); foreach (var item in mbrAddresses) { /* 假設條件(address 先決): * 1. 非 ASCII 地址就係中國 * 2. 由 Address 找到所屬 Country,分為:中國﹑香港﹑其他 * 3. 如果 match 唔倒,當係 香港 */ String country = "", areacode = "", number1 = "", number2 = ""; country = IsChinese(item.Address) ? "china" : StripCountry(item.Address); if (country != String.Empty) { country = country.ToLower().Replace(".", ""); var validCountry = ccodes.FindByDisplayName(country); var found = validCountry != null ? true : false; if (!found) { country = "hong kong"; } var inList = countries.Where(x => x == country).FirstOrDefault(); if (inList == null) { countries.Add(country); } } _CurrentItem = (--counts).ToString(); //ctx.SaveChanges(); } #region 顯示結果:countries 有哂啲 unique 嘅名,轉做 array 再轉為 json string 方便顯示個 result var str = String.Join("; ", countries.OrderBy(x => x).ToArray()); _AllCountries = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(str)).Replace("?", ""); #endregion //scope.Commit(); } catch { //scope.Rollback(); } } } #endregion } }