/// <summary> /// Constructs page zone and page zone element collections for calls to stored procedures that contain user defined table types. /// </summary> /// <param name="page">Contains page information used to populate collections.</param> /// <param name="pageZoneCollection">Page zone collection.</param> /// <param name="pageZoneElementCollection">Page zone element collection.</param> private void GetPageCollections(Page page, out PageZoneCollection pageZoneCollection, out PageZoneElementCollection pageZoneElementCollection) { pageZoneCollection = new PageZoneCollection(); pageZoneElementCollection = new PageZoneElementCollection(); foreach (PageZone pageZone in page.PageZones) { pageZoneCollection.Add(pageZone); foreach (PageZoneElement pageZoneElement in pageZone.PageZoneElements) { pageZoneElementCollection.Add(pageZoneElement); } } }
/// <summary> /// Updates a zone's elements. /// </summary> /// <param name="tenantId">The tenant identifying website that page belongs to.</param> /// <param name="pageId">The page that zone belongs to.</param> /// <param name="pageZoneId">Identifies zone within page that is being updated.</param> /// <param name="pageZoneElements">Updated list of page zone elements.</param> /// <param name="unitOfWork">Unit of work.</param> public void UpdatePageZoneElements(long tenantId, long pageId, long pageZoneId, List <PageZoneElement> pageZoneElements, IUnitOfWork unitOfWork = null) { PageZoneElementCollection pageZoneElementCollection = new PageZoneElementCollection(); foreach (PageZoneElement pageZoneElement in pageZoneElements) { pageZoneElementCollection.Add(pageZoneElement); } IUnitOfWork localUnitOfWork = unitOfWork == null?_unitOfWorkFactory.CreateUnitOfWork() : null; try { IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork ?? localUnitOfWork); dbm.SetSQL(_sqlManager.GetSql("Sql.UpdatePageZoneElements.sql")); dbm.AddParameter("@TenantId", FieldType.BigInt, tenantId); dbm.AddParameter("@PageId", FieldType.BigInt, pageId); dbm.AddParameter("@PageZoneId", FieldType.BigInt, pageZoneId); dbm.AddTypedParameter("@PageZoneElements", FieldType.Structured, pageZoneElementCollection.Count == 0 ? null : pageZoneElementCollection, "cms.PageZoneElementTableType"); dbm.ExecuteNonQuery(); if (localUnitOfWork != null) { localUnitOfWork.Commit(); } } catch { if (localUnitOfWork != null) { localUnitOfWork.Rollback(); } throw; } finally { if (localUnitOfWork != null) { localUnitOfWork.Dispose(); } } }
/// <summary> /// Creates multiple page zone elements. /// </summary> /// <param name="tenantId">Identifies website where page zone elements created.</param> /// <param name="pageZoneElements">List of page zone elements to create.</param> /// <param name="unitOfWork">Unit of work.</param> public void CreatePageZoneElements(long tenantId, List <PageZoneElement> pageZoneElements, IUnitOfWork unitOfWork = null) { IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork); try { PageZoneElementCollection pageZoneElementCollection = new PageZoneElementCollection(); foreach (PageZoneElement pageZoneElement in pageZoneElements) { pageZoneElementCollection.Add(pageZoneElement); } dbm.SetSQL(_sqlManager.GetSql("Sql.CreatePageZoneElements.sql")); dbm.AddParameter("@TenantId", FieldType.BigInt, tenantId); dbm.AddTypedParameter("@PageZoneElements", FieldType.Structured, pageZoneElementCollection.Count == 0 ? null : pageZoneElementCollection, "cms.PageZoneElementTableType"); dbm.ExecuteNonQuery(); } finally { if (unitOfWork == null) { dbm.Dispose(); } } }