示例#1
0
        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);
        }
示例#3
0
        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);
            }
        }
示例#5
0
        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());
        }
示例#6
0
        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));
        }