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()); }
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); } }