public DynamicText SaveDynamicText(DynamicText dynamicText, IfDefaultNotExistAction actionForDefaultCulture = IfDefaultNotExistAction.DoNothing) { LogNotSet(); return(null); }
public DynamicText SaveDynamicText( DynamicText dynamicText, IfDefaultNotExistAction actionForDefaultCulture = IfDefaultNotExistAction.DoNothing ) { return(m_databaseDynamicTextService.SaveDynamicText(dynamicText, actionForDefaultCulture)); }
public DynamicText SaveDynamicText(DynamicText dynamicText, IfDefaultNotExistAction actionForDefaultCulture = IfDefaultNotExistAction.DoNothing) { using (var dbContext = m_dbContextFunc.Invoke()) { var dao = new StaticTextDao(dbContext.StaticText); var dictionaryScope = GetDictionaryScope(dbContext, dynamicText.DictionaryScope); if (dictionaryScope.Name != dynamicText.DictionaryScope) { dictionaryScope = CreateDictionaryScope(dbContext, dynamicText.DictionaryScope); } var culture = GetCultureByNameOrGetDefault(dbContext, dynamicText.Culture); var existsInCulture = culture.Name == dynamicText.Culture; if (!existsInCulture) { culture = CreateCulture(dbContext, dynamicText.Culture); CreateCultureHierarchy(dbContext, culture); } var staticText = dao.FindByNameAndCultureAndScope( dynamicText.Name, culture, dictionaryScope, dbContext.CultureHierarchy ); if (staticText == null || !existsInCulture || staticText.CultureId != culture.Id) { staticText = new StaticText { Format = dynamicText.Format, ModificationTime = DateTime.UtcNow, ModificationUser = dynamicText.ModificationUser, Name = dynamicText.Name, Text = dynamicText.Text, Culture = culture, DictionaryScope = dictionaryScope }; dao.Create(staticText); } else { staticText.Format = dynamicText.Format; staticText.ModificationTime = DateTime.UtcNow; staticText.ModificationUser = dynamicText.ModificationUser; staticText.Name = dynamicText.Name; staticText.Text = dynamicText.Text; dao.Update(staticText); } ExecuteDefaultCultureAction(actionForDefaultCulture, dynamicText, culture, dictionaryScope, dbContext, dao); dbContext.SaveChanges(); return(dynamicText); } }
public DynamicText SaveDynamicText( DynamicText dynamicText, IfDefaultNotExistAction actionForDefaultCulture = IfDefaultNotExistAction.DoNothing ) { var dictionaryScope = GetDictionaryScope(dynamicText.DictionaryScope); if (dictionaryScope.Name != dynamicText.DictionaryScope) { m_dictionaryScopeUoW.AddScope(dynamicText.DictionaryScope); dictionaryScope = GetDictionaryScope(dynamicText.DictionaryScope); } var culture = GetCultureByNameOrGetDefault(dynamicText.Culture); if (culture.Name != dynamicText.Culture) { throw new ArgumentException($"Unknown culture {dynamicText.Culture}"); } var staticText = m_staticTextUoW.GetByNameAndCultureAndScope( dynamicText.Name, culture.Name, dictionaryScope.Name ); if (staticText == null) { m_staticTextUoW.AddStaticText( dynamicText.Name, dynamicText.Format, dynamicText.Text, culture.Name, dictionaryScope.Name, dynamicText.ModificationUser, DateTime.UtcNow ); } else { m_staticTextUoW.UpdateStaticText( dynamicText.Name, culture.Name, dictionaryScope.Name, dynamicText.Format, dynamicText.Text, dynamicText.ModificationUser, DateTime.UtcNow ); } ExecuteDefaultCultureAction(actionForDefaultCulture, dynamicText, culture, dictionaryScope); return(dynamicText); }
/// <summary> /// Executes an action on default culture text if it does not exist. Actions include - nothing, create empty string, copy current culture text /// </summary> /// <param name="actionForDefaultCulture">Specific action</param> /// <param name="dynamicText">Current dynamic text entity</param> /// <param name="currentCulture">Current culture entity</param> /// <param name="dictionaryScope">Current dictionary scope entity</param> /// <param name="dbContext">Database context</param> /// <param name="dao">DAO of static text entity</param> private void ExecuteDefaultCultureAction(IfDefaultNotExistAction actionForDefaultCulture, DynamicText dynamicText, Culture currentCulture, DictionaryScope dictionaryScope, IDatabaseStaticTextContext dbContext, StaticTextDao dao) { var defaultCulture = GetDefaultCulture(dbContext); if (currentCulture == defaultCulture) { return; } var defaultText = dao.FindByNameAndCultureAndScope( dynamicText.Name, defaultCulture, dictionaryScope, dbContext.CultureHierarchy ); if (defaultText != null) { return; } defaultText = new StaticText { Format = dynamicText.Format, ModificationTime = DateTime.UtcNow, ModificationUser = dynamicText.ModificationUser, Name = dynamicText.Name, Culture = defaultCulture, DictionaryScope = dictionaryScope, }; switch (actionForDefaultCulture) { case IfDefaultNotExistAction.DoNothing: return; case IfDefaultNotExistAction.CreateEmpty: defaultText.Text = string.Empty; dao.Create(defaultText); break; case IfDefaultNotExistAction.CreateTextCopy: defaultText.Text = dynamicText.Text; dao.Create(defaultText); break; default: throw new ArgumentOutOfRangeException(nameof(actionForDefaultCulture), actionForDefaultCulture, "Invalid default language save action"); } }
/// <summary> /// Executes an action on default culture text if it does not exist. Actions include - nothing, create empty string, copy current culture text /// </summary> /// <param name="actionForDefaultCulture">Specific action</param> /// <param name="dynamicText">Current dynamic text entity</param> /// <param name="currentCulture">Current culture entity</param> /// <param name="dictionaryScope">Current dictionary scope entity</param> private void ExecuteDefaultCultureAction( IfDefaultNotExistAction actionForDefaultCulture, DynamicText dynamicText, ICulture currentCulture, IDictionaryScope dictionaryScope ) { if (actionForDefaultCulture == IfDefaultNotExistAction.DoNothing) { return; } var defaultCulture = GetDefaultCulture(); if (currentCulture.Equals(defaultCulture)) { return; } var defaultText = m_staticTextUoW.GetByNameAndCultureAndScope( dynamicText.Name, defaultCulture.Name, dictionaryScope.Name ); if (defaultText != null) { return; } string text; switch (actionForDefaultCulture) { case IfDefaultNotExistAction.DoNothing: return; case IfDefaultNotExistAction.CreateEmpty: text = string.Empty; break; case IfDefaultNotExistAction.CreateTextCopy: text = dynamicText.Text; break; default: throw new ArgumentOutOfRangeException( nameof(actionForDefaultCulture), actionForDefaultCulture, "Invalid default language save action" ); } m_staticTextUoW.AddStaticText( dynamicText.Name, dynamicText.Format, text, defaultCulture.Name, dictionaryScope.Name, dynamicText.ModificationUser, DateTime.UtcNow ); }