private void CreateCultureHierarchy(IDatabaseStaticTextContext dbContext, Culture culture) { var cultureHierarchyDao = new CultureHierarchyDao(dbContext.CultureHierarchy); var cultureDao = new CultureDao(dbContext.Culture); cultureHierarchyDao.MakeCultureSelfReferencing(culture); var defaultCultureName = m_configuration.DefaultCulture.Name; var defaultCulture = cultureDao.FindByName(defaultCultureName); var cultureInfo = new CultureInfo(culture.Name); if (cultureInfo.IsNeutralCulture) //Just reference to default culture { cultureHierarchyDao.MakeCultureReference(culture, defaultCulture, 1); } else { var parentCultureName = cultureInfo.Parent.Name; var parentCulture = cultureDao.FindByName(parentCultureName); if (parentCulture == null) { cultureHierarchyDao.MakeCultureReference(culture, defaultCulture, 1); } else { cultureHierarchyDao.MakeCultureReference(culture, parentCulture, 1); cultureHierarchyDao.MakeCultureReference(culture, defaultCulture, 2); } } }
/// <summary> /// Creates for given culture self reference in culture hierarchy tree with level 0 (if not already exists). /// </summary> /// <param name="cultureInfo">Culture</param> private async Task CreateCultureHierarchySelfReference(CultureInfo cultureInfo) { using (var dbContext = m_dbContextFunc.Invoke()) { var cultureDao = new CultureDao(dbContext.Culture); var culture = cultureDao.FindByName(cultureInfo.Name); var cultureHierarchyDao = new CultureHierarchyDao(dbContext.CultureHierarchy); var isCultureSelfReferencing = await cultureHierarchyDao.IsCultureSelfReferencing(culture); if (!isCultureSelfReferencing) { cultureHierarchyDao.MakeCultureSelfReferencing(culture); dbContext.SaveChanges(); } } }
private async Task CreateCultureHierarchy(IReadOnlyList <CultureInfo> supportedCultures, CultureInfo defaultCulture) { using (var dbContext = m_dbContextFunc.Invoke()) { var cultureHierarchyDao = new CultureHierarchyDao(dbContext.CultureHierarchy); var cultureDao = new CultureDao(dbContext.Culture); var defaultCultureEntity = cultureDao.FindByName(defaultCulture.Name); IList <CultureInfo> supportedCulturesWithoutDefault = supportedCultures.ToList(); supportedCulturesWithoutDefault.Remove(defaultCulture); foreach (var supportedCultureA in supportedCulturesWithoutDefault) { var cultureEntityA = cultureDao.FindByName(supportedCultureA.Name); foreach (var supportedCultureB in supportedCultures) { if (supportedCultureA.Name == supportedCultureB.Name) { continue; } var cultureEntityB = cultureDao.FindByName(supportedCultureB.Name); if (supportedCultureB.Parent.Equals(supportedCultureA)) { var isCultureBReferencingA = await cultureHierarchyDao.IsCultureReferencing(cultureEntityB, cultureEntityA); if (!isCultureBReferencingA) { cultureHierarchyDao.MakeCultureReference(cultureEntityB, cultureEntityA, 1); dbContext.SaveChanges(); } } } } foreach (var supportedCulture in supportedCulturesWithoutDefault) { if (supportedCulture.IsNeutralCulture) { var cultureEntity = cultureDao.FindByName(supportedCulture.Name); var isCultureReferencingDefaultCulture = await cultureHierarchyDao.IsCultureReferencing(cultureEntity, defaultCultureEntity); if (!isCultureReferencingDefaultCulture) { cultureHierarchyDao.MakeCultureReference(cultureEntity, defaultCultureEntity, 1); dbContext.SaveChanges(); } } } // foreach (var supportedCultureA in supportedCultures) { var cultureEntityA = cultureDao.FindByName(supportedCultureA.Name); foreach (var supportedCultureB in supportedCultures) { if (supportedCultureA.Name == supportedCultureB.Name || supportedCultureB.Name == defaultCultureEntity.Name) { continue; } var cultureEntityB = cultureDao.FindByName(supportedCultureB.Name); if (supportedCultureB.Parent.Equals(supportedCultureA)) { if (cultureEntityA.Name != defaultCultureEntity.Name) { var isCultureAReferencingDefaultCulture = await cultureHierarchyDao.IsCultureReferencing(cultureEntityA, defaultCultureEntity); if (isCultureAReferencingDefaultCulture) { var isCultureBReferencingDefaultCulture = await cultureHierarchyDao.IsCultureReferencing(cultureEntityB, defaultCultureEntity); if (!isCultureBReferencingDefaultCulture) { cultureHierarchyDao.MakeCultureReference(cultureEntityB, defaultCultureEntity, 2); dbContext.SaveChanges(); } } } } } } } }