Example #1
0
        public DynamicText SaveDynamicText(DynamicText dynamicText,
                                           IfDefaultNotExistAction actionForDefaultCulture = IfDefaultNotExistAction.DoNothing)
        {
            LogNotSet();

            return(null);
        }
Example #2
0
 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
                );
        }