private IEnumerable <AbTestContainerBasePersistentData> GetTestsContainers(int siteId, bool isStage, bool onlyActive, IDbTransaction transaction = null) { var currentDate = DateTime.Now; var scriptContainersQuery = _netNameQueryAnalyzer.PrepareQuery(CmdGetTestsContainers, siteId, isStage); var scriptContainersDict = UnitOfWork.Connection.Query <AbTestScriptContainerPersistentData>(scriptContainersQuery, new { currentDate, onlyActive = (onlyActive ? 1 : 0), containerType = "AbTestScriptContainer" }, transaction).ToDictionary(_ => _.Id); var scriptQuery = _netNameQueryAnalyzer.PrepareQuery(CmdGetAbTestScripts, siteId, isStage); var scripts = UnitOfWork.Connection.Query <AbTestScriptPersistentData>(scriptQuery, transaction: transaction); foreach (var s in scripts) { if (scriptContainersDict.ContainsKey(s.ContainerId)) { scriptContainersDict[s.ContainerId].Scripts.Add(s); } } var redirectContainersQuery = _netNameQueryAnalyzer.PrepareQuery(CmdGetTestsContainers, siteId, isStage); var redirectContainersDict = UnitOfWork.Connection.Query <AbTestClientRedirectContainerPersistentData>(redirectContainersQuery, new { currentDate, onlyActive = (onlyActive ? 1 : 0), containerType = "AbTestClientRedirectContainer" }, transaction).ToDictionary(_ => _.Id); var redirectQuery = _netNameQueryAnalyzer.PrepareQuery(CmdGetAbTestClientRedirects, siteId, isStage); var redirects = UnitOfWork.Connection.Query <AbTestClientRedirectPersistentData>(redirectQuery, transaction: transaction); foreach (var r in redirects) { if (redirectContainersDict.ContainsKey(r.ContainerId)) { redirectContainersDict[r.ContainerId].Redirects.Add(r); } } return(scriptContainersDict.Values.Cast <AbTestContainerBasePersistentData>() .Concat(redirectContainersDict.Values.Cast <AbTestContainerBasePersistentData>())); }
public List <ItemDefinitionData> GetAllItemDefinitions(int siteId, IDbTransaction transaction = null) { _logger.LogDebug($"getAllItemDefinitions. siteId: {siteId}"); var query = _netNameQueryAnalyzer.PrepareQuery(CmdGetAllItemDefinitions, siteId, false); var result = _uow.Connection.Query <ItemDefinitionData>(query, transaction).ToList(); _logger.LogDebug($"getAllItemDefinitions. total: {result.Count}"); return(result); }
private string GetAllAbstractItemsQuery(int siteId, bool isArchive) { string query = $@" SELECT ai.content_item_id AS Id, ai.archive AS IsArchive, ai.|QPAbstractItem.Name| as Alias, ai.|QPAbstractItem.Title| as Title, ai.|QPAbstractItem.Parent| AS ParentId, ai.|QPAbstractItem.IsVisible| AS IsVisible, ai.|QPAbstractItem.ZoneName| AS ZoneName, ai.|QPAbstractItem.IndexOrder| AS IndexOrder, ai.|QPAbstractItem.ExtensionId| AS ExtensionId, ai.|QPAbstractItem.VersionOf| AS VersionOfId, ai.|QPAbstractItem.IsInSiteMap| AS IsInSiteMap, def.content_item_id AS DiscriminatorId, def.|QPDiscriminator.Name| as Discriminator, def.|QPDiscriminator.IsPage| as IsPage, def.|QPDiscriminator.Title| as DiscriminatorTitle, def.|QPDiscriminator.IconUrl| as IconUrl, CASE WHEN ai.STATUS_TYPE_ID IN (SELECT st.STATUS_TYPE_ID FROM STATUS_TYPE st WHERE st.STATUS_TYPE_NAME=N'Published') THEN 1 ELSE 0 END AS Published FROM |QPAbstractItem| ai INNER JOIN |QPDiscriminator| def on ai.|QPAbstractItem.Discriminator| = def.content_item_id WHERE ai.archive={(isArchive ? "1" : "0")} AND ai.visible=1 ORDER BY ai.|QPAbstractItem.Parent|, ai.|QPAbstractItem.IndexOrder|, ai.content_item_id "; return(_netNameQueryAnalyzer.PrepareQuery(query, siteId, false, true)); }
public List <AbstractItemData> GetItems(int siteId, bool isArchive, IEnumerable <int> parentIds, IDbTransaction transaction = null) { _logger.LogDebug( $"getItems. siteId: {siteId}, isArchive: {isArchive}, parentIds: {SerializeData(parentIds)}"); const int maxParentIdsPerRequest = 500; var idList = SqlQuerySyntaxHelper.IdList(_uow.DatabaseType, "@ParentIds", "parentIds"); var query = _netNameQueryAnalyzer.PrepareQuery(CmdGetAbstractWidgetItem($"IN (SELECT Id FROM {idList})"), siteId, false, true); if (parentIds == null) { throw new ArgumentNullException(nameof(parentIds), "need not null and not empty parent ids"); } if (!parentIds.Any()) { return(new List <AbstractItemData>()); } if (parentIds.Count() > maxParentIdsPerRequest) { var result = new List <AbstractItemData>(); for (var i = 0; i < (float)parentIds.Count() / maxParentIdsPerRequest; i++) { int[] r = parentIds.Skip(i * maxParentIdsPerRequest).Take(maxParentIdsPerRequest).ToArray(); result.AddRange(GetItems(siteId, isArchive, r)); } _logger.LogDebug($"getItems. count: {result.Count}"); return(result); } else { var result = _uow.Connection .Query <AbstractItemData>( string.Format(query, SqlQuerySyntaxHelper.ToBoolSql(_uow.DatabaseType, isArchive)), new { Archive = isArchive, ParentIds = parentIds }, transaction) .ToList(); _logger.LogDebug($"getItems. count: {result.Count}"); return(result); } }
public IEnumerable <ItemDefinitionPersistentData> GetAllItemDefinitions(int siteId, bool isStage, IDbTransaction transaction = null) { var query = _netNameQueryAnalyzer.PrepareQuery(CmdGetAll, siteId, isStage); return(UnitOfWork.Connection.Query <ItemDefinitionPersistentData>(query, transaction).ToList()); }
public IEnumerable <AbstractItemPersistentData> GetPlainAllAbstractItems(int siteId, bool isStage, IDbTransaction transaction = null) { var query = _netNameQueryAnalyzer.PrepareQuery(CmdGetAbstractItem, siteId, isStage); return(UnitOfWork.Connection.Query <AbstractItemPersistentData>(query, transaction)); }