示例#1
0
        public static string UpdateVirtualContents(int oldSiteId, int newSiteId, IEnumerable <DataRow> rows)
        {
            var contentsWithErrors = new StringBuilder();

            if (rows == null)
            {
                return(string.Empty);
            }

            foreach (var row in rows)
            {
                var virtualTypeId = int.Parse(row["virtual_type"].ToString());
                var newContentId  = int.Parse(row["content_id_new"].ToString());
                var helper        = new VirtualContentHelper();
                var newContent    = ContentRepository.GetById(newContentId);
                if (virtualTypeId == VirtualType.UserQuery)
                {
                    var contentsRelations = ContentRepository.GetRelationsBetweenContents(oldSiteId, newSiteId, string.Empty).ToList();
                    var newSqlQuery       = ReplaceOldContentIdsFromQuery(contentsRelations, row["sqlquery"].ToString());
                    ContentRepository.UpdateVirtualContent(newSqlQuery, newContentId);
                    newContent.UserQuery = newSqlQuery;
                }
                try
                {
                    helper.CreateContentViews(newContent);
                }
                catch (Exception)
                {
                    contentsWithErrors.Append($"{newContent.Name}, ");
                }
            }

            return(contentsWithErrors.ToString());
        }
示例#2
0
        public static Field Update(Field item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            if (!FieldRepository.Exists(item.Id))
            {
                throw new ApplicationException(string.Format(FieldStrings.FieldNotFound, item.Id));
            }

            if (item.Content.VirtualType == VirtualType.None)
            {
                throw new ApplicationException($"Content {item.Content.Id} of field {item.Id} is not virtual.");
            }

            using (VirtualFieldRepository.LoadVirtualFieldsRelationsToMemory(item.ContentId))
            {
                var newField = ((IFieldRepository) new FieldRepository()).Update(item);
                var helper   = new VirtualContentHelper();

                helper.DropContentViews(newField.Content);
                helper.CreateContentViews(newField.Content);

                // Обновить дочерние виртуальные контенты
                helper.UpdateVirtualFields(newField);
                return(newField);
            }
        }