Beispiel #1
0
        public ActionResult DeleteManager(DeleteManager m)
        {
            if (!string.IsNullOrEmpty(m.Name))
            {
                ExploreMidwest.Data.ExploreMidwestDBContext context = new Data.ExploreMidwestDBContext();

                var userMgr = new UserManager <IdentityUser>(new UserStore <IdentityUser>(context));
                var roleMgr = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context));

                var findmanager = userMgr.FindByName(m.Name);
                // create the user with the manager class
                if (findmanager != null)
                {
                    userMgr.Delete(findmanager);
                }
                else
                {
                    return(View(m));
                }
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                ModelState.AddModelError("Name", "Please Enter A Name");
            }
            return(View(m));
        }
Beispiel #2
0
        private void DeleteAllPage()
        {
            var templateType = TemplateTypeUtils.GetEnumType(AuthRequest.GetQueryString("TemplateType"));

            if (templateType == TemplateType.ChannelTemplate)
            {
                LtlTitle.Text = "删除已生成的栏目页文件";
            }
            else if (templateType == TemplateType.ContentTemplate)
            {
                LtlTitle.Text = "删除所有已生成的内容页文件";
            }
            else if (templateType == TemplateType.FileTemplate)
            {
                LtlTitle.Text = "删除所有已生成的文件页";
            }

            try
            {
                if (templateType == TemplateType.ChannelTemplate)
                {
                    var channelIdList = ChannelManager.GetChannelIdList(SiteId);
                    DeleteManager.DeleteChannelsByPage(SiteInfo, channelIdList);
                }
                else if (templateType == TemplateType.ContentTemplate)
                {
                    var channelIdList = ChannelManager.GetChannelIdList(SiteId);
                    DeleteManager.DeleteContentsByPage(SiteInfo, channelIdList);
                }
                else if (templateType == TemplateType.FileTemplate)
                {
                    DeleteManager.DeleteFiles(SiteInfo, DataProvider.TemplateDao.GetIdListByType(SiteId, TemplateType.FileTemplate));
                }

                AuthRequest.AddSiteLog(SiteId, LtlTitle.Text);

                LtlRegisterScripts.Text = @"
<script>
$(document).ready(function(){
    writeResult('任务执行成功。', '');
})
</script>
";
            }
            catch (Exception ex)
            {
                LtlRegisterScripts.Text = $@"
<script>
$(document).ready(function(){{
    writeResult('', '{ex.Message}');
}})
</script>
";
            }
        }
        public void Delete_OnClick(object sender, EventArgs e)
        {
            if (!Page.IsPostBack || !Page.IsValid)
            {
                return;
            }

            try
            {
                var channelIdList = TranslateUtils.StringCollectionToIntList(AuthRequest.GetQueryString("ChannelIDCollection"));
                channelIdList.Sort();
                channelIdList.Reverse();

                var channelIdListToDelete = new List <int>();
                foreach (var channelId in channelIdList)
                {
                    if (channelId == SiteId)
                    {
                        continue;
                    }
                    if (HasChannelPermissions(channelId, ConfigManager.ChannelPermissions.ChannelDelete))
                    {
                        channelIdListToDelete.Add(channelId);
                    }
                }

                var builder = new StringBuilder();
                foreach (var channelId in channelIdListToDelete)
                {
                    builder.Append(ChannelManager.GetChannelName(SiteId, channelId)).Append(",");
                }

                if (builder.Length > 0)
                {
                    builder.Length -= 1;
                }

                if (_deleteContents)
                {
                    SuccessMessage(bool.Parse(RblRetainFiles.SelectedValue) == false
                        ? "成功删除内容以及生成页面!"
                        : "成功删除内容,生成页面未被删除!");

                    foreach (var channelId in channelIdListToDelete)
                    {
                        var tableName     = ChannelManager.GetTableName(SiteInfo, channelId);
                        var contentIdList = DataProvider.ContentDao.GetContentIdList(tableName, channelId);
                        DeleteManager.DeleteContents(SiteInfo, channelId, contentIdList);
                        DataProvider.ContentDao.UpdateTrashContents(SiteId, channelId, tableName, contentIdList);
                    }

                    AuthRequest.AddSiteLog(SiteId, "清空栏目下的内容", $"栏目:{builder}");
                }
                else
                {
                    if (bool.Parse(RblRetainFiles.SelectedValue) == false)
                    {
                        DeleteManager.DeleteChannels(SiteInfo, channelIdListToDelete);
                        SuccessMessage("成功删除栏目以及相关生成页面!");
                    }
                    else
                    {
                        SuccessMessage("成功删除栏目,相关生成页面未被删除!");
                    }

                    foreach (var channelId in channelIdListToDelete)
                    {
                        var tableName = ChannelManager.GetTableName(SiteInfo, channelId);
                        DataProvider.ContentDao.UpdateTrashContentsByChannelId(SiteId, channelId, tableName);
                        DataProvider.ChannelDao.Delete(SiteId, channelId);
                    }

                    AuthRequest.AddSiteLog(SiteId, "删除栏目", $"栏目:{builder}");
                }

                AddWaitAndRedirectScript(ReturnUrl);
            }
            catch (Exception ex)
            {
                FailMessage(ex, _deleteContents ? "删除内容失败!" : "删除栏目失败!");

                LogUtils.AddErrorLog(ex);
            }
        }
Beispiel #4
0
        public IHttpActionResult Submit()
        {
            try
            {
                var request = new RequestImpl();

                var siteId        = request.GetPostInt("siteId");
                var channelId     = request.GetPostInt("channelId");
                var contentIdList = TranslateUtils.StringCollectionToIntList(request.GetPostString("contentIds"));
                var isRetainFiles = request.GetPostBool("isRetainFiles");

                if (!request.IsUserLoggin ||
                    !request.UserPermissionsImpl.HasChannelPermissions(siteId, channelId,
                                                                       ConfigManager.ChannelPermissions.ContentDelete))
                {
                    return(Unauthorized());
                }

                var siteInfo = SiteManager.GetSiteInfo(siteId);
                if (siteInfo == null)
                {
                    return(BadRequest("无法确定内容对应的站点"));
                }

                var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId);
                if (channelInfo == null)
                {
                    return(BadRequest("无法确定内容对应的栏目"));
                }

                if (!isRetainFiles)
                {
                    DeleteManager.DeleteContents(siteInfo, channelId, contentIdList);
                }

                var tableName = ChannelManager.GetTableName(siteInfo, channelInfo);

                if (contentIdList.Count == 1)
                {
                    var contentId    = contentIdList[0];
                    var contentTitle = DataProvider.ContentDao.GetValue(tableName, contentId, ContentAttribute.Title);
                    request.AddSiteLog(siteId, channelId, contentId, "删除内容",
                                       $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, channelId)},内容标题:{contentTitle}");
                }
                else
                {
                    request.AddSiteLog(siteId, "批量删除内容",
                                       $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, channelId)},内容条数:{contentIdList.Count}");
                }

                DataProvider.ContentDao.UpdateTrashContents(siteId, channelId, tableName, contentIdList);

                CreateManager.TriggerContentChangedEvent(siteId, channelId);

                return(Ok(new
                {
                    Value = contentIdList
                }));
            }
            catch (Exception ex)
            {
                LogUtils.AddErrorLog(ex);
                return(InternalServerError(ex));
            }
        }
Beispiel #5
0
 public void init(ArrayList pieceList)
 {
     this.pieceList = pieceList;
     delManager = GameObject.Find ("DeleteManager").GetComponent<DeleteManager> ();
     createManager = GameObject.Find ("CreateManager").GetComponent<CreateManager> ();
 }
        private static async Task CreateContentAsync(SiteInfo siteInfo, ChannelInfo channelInfo, int contentId)
        {
            var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId);

            if (contentInfo == null)
            {
                return;
            }

            if (!contentInfo.IsChecked)
            {
                DeleteManager.DeleteContent(siteInfo, channelInfo.Id, contentId);
                return;
            }

            //引用链接,不需要生成内容页;引用内容,需要生成内容页;
            if (contentInfo.ReferenceId > 0 &&
                ETranslateContentTypeUtils.GetEnumType(contentInfo.GetString(ContentAttribute.TranslateContentType)) !=
                ETranslateContentType.ReferenceContent)
            {
                return;
            }

            if (!string.IsNullOrEmpty(contentInfo.GetString(ContentAttribute.LinkUrl)))
            {
                return;
            }

            if (siteInfo.Additional.IsCreateStaticContentByAddDate &&
                contentInfo.AddDate < siteInfo.Additional.CreateStaticContentAddDate)
            {
                return;
            }

            var templateInfo = TemplateManager.GetContentTemplateInfo(siteInfo.Id, channelInfo.Id);
            var pageInfo     = new PageInfo(channelInfo.Id, contentId, siteInfo, templateInfo,
                                            new Dictionary <string, object>());
            var contextInfo = new ContextInfo(pageInfo)
            {
                ContextType = EContextType.Content,
                ContentInfo = contentInfo
            };
            var filePath       = PathUtility.GetContentPageFilePath(siteInfo, pageInfo.PageChannelId, contentInfo, 0);
            var contentBuilder = new StringBuilder(TemplateManager.GetTemplateContent(siteInfo, templateInfo));

            var stlLabelList = StlParserUtility.GetStlLabelList(contentBuilder.ToString());

            //如果标签中存在<stl:content type="PageContent"></stl:content>
            if (StlParserUtility.IsStlContentElementWithTypePageContent(stlLabelList)) //内容存在
            {
                var stlElement           = StlParserUtility.GetStlContentElementWithTypePageContent(stlLabelList);
                var stlElementTranslated = StlParserManager.StlEncrypt(stlElement);
                contentBuilder.Replace(stlElement, stlElementTranslated);

                var innerBuilder = new StringBuilder(stlElement);
                StlParserManager.ParseInnerContent(innerBuilder, pageInfo, contextInfo);
                var pageContentHtml = innerBuilder.ToString();
                var pageCount       = StringUtils.GetCount(ContentUtility.PagePlaceHolder, pageContentHtml) + 1; //一共需要的页数

                Parser.Parse(pageInfo, contextInfo, contentBuilder, filePath, false);

                for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++)
                {
                    var thePageInfo = pageInfo.Clone();

                    var index  = pageContentHtml.IndexOf(ContentUtility.PagePlaceHolder, StringComparison.Ordinal);
                    var length = index == -1 ? pageContentHtml.Length : index;

                    var pageHtml     = pageContentHtml.Substring(0, length);
                    var pagedBuilder =
                        new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml));
                    StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList,
                                                                      channelInfo.Id, contentId, currentPageIndex, pageCount);

                    filePath = PathUtility.GetContentPageFilePath(siteInfo, thePageInfo.PageChannelId, contentInfo,
                                                                  currentPageIndex);
                    await GenerateFileAsync(filePath, pageInfo.TemplateInfo.Charset, pagedBuilder);

                    if (index != -1)
                    {
                        pageContentHtml = pageContentHtml.Substring(length + ContentUtility.PagePlaceHolder.Length);
                    }
                }
            }
            //如果标签中存在<stl:pageContents>
            else if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlLabelList))
            {
                var stlElement           = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlLabelList);
                var stlElementTranslated = StlParserManager.StlEncrypt(stlElement);

                var pageContentsElementParser = new StlPageContents(stlElement, pageInfo, contextInfo);
                int totalNum;
                var pageCount = pageContentsElementParser.GetPageCount(out totalNum);

                Parser.Parse(pageInfo, contextInfo, contentBuilder, filePath, false);

                for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++)
                {
                    var thePageInfo  = pageInfo.Clone();
                    var pageHtml     = pageContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, true);
                    var pagedBuilder =
                        new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml));

                    StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList,
                                                                      channelInfo.Id, contentId, currentPageIndex, pageCount);

                    filePath = PathUtility.GetContentPageFilePath(siteInfo, thePageInfo.PageChannelId, contentInfo,
                                                                  currentPageIndex);
                    await GenerateFileAsync(filePath, pageInfo.TemplateInfo.Charset, pagedBuilder);
                }
            }
            //如果标签中存在<stl:pageChannels>
            else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlLabelList))
            {
                var stlElement           = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlLabelList);
                var stlElementTranslated = StlParserManager.StlEncrypt(stlElement);

                var pageChannelsElementParser = new StlPageChannels(stlElement, pageInfo, contextInfo);
                var pageCount = pageChannelsElementParser.GetPageCount(out _);

                Parser.Parse(pageInfo, contextInfo, contentBuilder, filePath, false);

                for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++)
                {
                    var thePageInfo  = pageInfo.Clone();
                    var pageHtml     = pageChannelsElementParser.Parse(currentPageIndex, pageCount);
                    var pagedBuilder =
                        new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml));

                    StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList,
                                                                      channelInfo.Id, contentId, currentPageIndex, pageCount);

                    filePath = PathUtility.GetContentPageFilePath(siteInfo, thePageInfo.PageChannelId, contentInfo,
                                                                  currentPageIndex);
                    await GenerateFileAsync(filePath, pageInfo.TemplateInfo.Charset, pagedBuilder);
                }
            }
            //如果标签中存在<stl:pageSqlContents>
            else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlLabelList))
            {
                var stlElement           = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlLabelList);
                var stlElementTranslated = StlParserManager.StlEncrypt(stlElement);

                var pageSqlContentsElementParser = new StlPageSqlContents(stlElement, pageInfo, contextInfo);
                var pageCount = pageSqlContentsElementParser.GetPageCount(out _);

                Parser.Parse(pageInfo, contextInfo, contentBuilder, filePath, false);

                for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++)
                {
                    var thePageInfo  = pageInfo.Clone();
                    var pageHtml     = pageSqlContentsElementParser.Parse(currentPageIndex, pageCount);
                    var pagedBuilder =
                        new StringBuilder(contentBuilder.ToString().Replace(stlElementTranslated, pageHtml));

                    StlParserManager.ReplacePageElementsInContentPage(pagedBuilder, thePageInfo, stlLabelList,
                                                                      channelInfo.Id, contentId, currentPageIndex, pageCount);

                    filePath = PathUtility.GetContentPageFilePath(siteInfo, thePageInfo.PageChannelId, contentInfo,
                                                                  currentPageIndex);
                    await GenerateFileAsync(filePath, pageInfo.TemplateInfo.Charset, pagedBuilder);
                }
            }
            else //无翻页
            {
                Parser.Parse(pageInfo, contextInfo, contentBuilder, filePath, false);
                await GenerateFileAsync(filePath, pageInfo.TemplateInfo.Charset, contentBuilder);
            }
        }
        public IHttpActionResult Submit()
        {
            try
            {
                var request = new AuthenticatedRequest();

                var siteId            = request.GetPostInt("siteId");
                var channelId         = request.GetPostInt("channelId");
                var channelContentIds =
                    MinContentInfo.ParseMinContentInfoList(request.GetPostString("channelContentIds"));
                var isRetainFiles = request.GetPostBool("isRetainFiles");

                if (!request.IsAdminLoggin ||
                    !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId,
                                                                        ConfigManager.ChannelPermissions.ContentDelete))
                {
                    return(Unauthorized());
                }

                var siteInfo = SiteManager.GetSiteInfo(siteId);
                if (siteInfo == null)
                {
                    return(BadRequest("无法确定内容对应的站点"));
                }

                var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId);
                if (channelInfo == null)
                {
                    return(BadRequest("无法确定内容对应的栏目"));
                }

                if (!isRetainFiles)
                {
                    foreach (var channelContentId in channelContentIds)
                    {
                        DeleteManager.DeleteContent(siteInfo, channelContentId.ChannelId, channelContentId.Id);
                    }
                }

                var tableName = ChannelManager.GetTableName(siteInfo, channelInfo);

                if (channelContentIds.Count == 1)
                {
                    var channelContentId = channelContentIds[0];
                    var contentTitle     = DataProvider.ContentDao.GetValue(tableName, channelContentId.Id, ContentAttribute.Title);
                    request.AddSiteLog(siteId, channelContentId.ChannelId, channelContentId.Id, "删除内容",
                                       $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, channelContentId.ChannelId)},内容标题:{contentTitle}");
                }
                else
                {
                    request.AddSiteLog(siteId, "批量删除内容",
                                       $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, channelId)},内容条数:{channelContentIds.Count}");
                }

                foreach (var distinctChannelId in channelContentIds.Select(x => x.ChannelId).Distinct())
                {
                    var contentIdList = channelContentIds.Where(x => x.ChannelId == distinctChannelId)
                                        .Select(x => x.Id).ToList();
                    DataProvider.ContentDao.UpdateTrashContents(siteId, distinctChannelId, tableName, contentIdList);

                    CreateManager.TriggerContentChangedEvent(siteId, distinctChannelId);
                }

                return(Ok(new
                {
                    Value = true
                }));
            }
            catch (Exception ex)
            {
                LogUtils.AddErrorLog(ex);
                return(InternalServerError(ex));
            }
        }
        public override void Submit_OnClick(object sender, EventArgs e)
        {
            if (!Page.IsPostBack || !Page.IsValid)
            {
                return;
            }

            try
            {
                foreach (var channelId in _idsDictionary.Keys)
                {
                    var tableName     = ChannelManager.GetTableName(SiteInfo, channelId);
                    var contentIdList = _idsDictionary[channelId];

                    if (!_isDeleteFromTrash)
                    {
                        if (bool.Parse(RblRetainFiles.SelectedValue) == false)
                        {
                            DeleteManager.DeleteContents(SiteInfo, channelId, contentIdList);
                            SuccessMessage("成功删除内容以及生成页面!");
                        }
                        else
                        {
                            SuccessMessage("成功删除内容,生成页面未被删除!");
                        }

                        if (contentIdList.Count == 1)
                        {
                            var contentId    = contentIdList[0];
                            var contentTitle = DataProvider.ContentDao.GetValue(tableName, contentId, ContentAttribute.Title);
                            AuthRequest.AddSiteLog(SiteId, channelId, contentId, "删除内容",
                                                   $"栏目:{ChannelManager.GetChannelNameNavigation(SiteId, channelId)},内容标题:{contentTitle}");
                        }
                        else
                        {
                            AuthRequest.AddSiteLog(SiteId, "批量删除内容",
                                                   $"栏目:{ChannelManager.GetChannelNameNavigation(SiteId, channelId)},内容条数:{contentIdList.Count}");
                        }

                        DataProvider.ContentDao.UpdateTrashContents(SiteId, channelId, tableName, contentIdList);

                        //引用内容,需要删除
                        //var siteTableNameList = SiteManager.GetTableNameList();
                        //foreach (var siteTableName in siteTableNameList)
                        //{
                        //    var targetContentIdList = DataProvider.ContentDao.GetReferenceIdList(siteTableName, contentIdList);
                        //    if (targetContentIdList.Count > 0)
                        //    {
                        //        var targetContentInfo = ContentManager.GetContentInfo(siteTableName, TranslateUtils.ToInt(targetContentIdList[0].ToString()));
                        //        DataProvider.ContentDao.DeleteContents(targetContentInfo.SiteId, siteTableName, targetContentIdList, targetContentInfo.ChannelId);
                        //    }
                        //}

                        CreateManager.TriggerContentChangedEvent(SiteId, channelId);
                    }
                    else
                    {
                        SuccessMessage("成功从回收站清空内容!");
                        DataProvider.ContentDao.DeleteContents(SiteId, tableName, contentIdList, channelId);

                        AuthRequest.AddSiteLog(SiteId, "从回收站清空内容", $"内容条数:{contentIdList.Count}");
                    }
                }


                AddWaitAndRedirectScript(_returnUrl);
            }
            catch (Exception ex)
            {
                LogUtils.AddErrorLog(ex);
                FailMessage(ex, "删除内容失败!");
            }
        }
 internal DeleteWhere(DeleteManager <TableType> manager) : base(manager)
 {
 }
 internal DeleteBase(DeleteManager <TableType> manager)
 {
     this.manager = manager;
 }
Beispiel #11
0
        private void ProcessDataRequest(DataRequest dataRequest, IClient client)
        {
            // the collection name is case insensitive
            var key = DataStores.Keys.FirstOrDefault(k => dataRequest.CollectionName.ToLower() == k.ToLower());

            DataStore dataStore = null;

            if (key != null)
            {
                dataStore = DataStores.TryGetValue(key);
            }
            else
            {
                // for now there is one special table containing the activity log. It is always non persistent and it has an LRU eviction policy

                if (dataRequest.CollectionName.ToLower() == "@activity")
                {
                    dataStore = _serviceContainer.Log.ActivityTable;
                }
            }


            if (dataStore == null)
            {
                throw new NotSupportedException("Unknown collection : " + dataRequest.CollectionName);
            }


            Dbg.Trace($"begin processing {dataRequest.AccessType} request on server {ShardIndex}");

            var lockManager = _serviceContainer.LockManager;

            if (dataRequest.AccessType == DataAccessType.Write)
            {
                if (dataRequest is DomainDeclarationRequest)
                {
                    if (PersistenceEngine != null)
                    {
                        throw new NotSupportedException(
                                  "Domain declaration can only be used in cache mode (without persistence)");
                    }
                }

                if (dataRequest is EvictionSetupRequest)
                {
                    if (PersistenceEngine != null)
                    {
                        throw new NotSupportedException(
                                  "Eviction can only be used in cache mode (without persistence)");
                    }
                }


                lockManager.DoWithWriteLock(() =>
                {
                    if (dataRequest is RemoveManyRequest removeManyRequest)
                    {
                        var mgr = new DeleteManager(dataStore, PersistenceEngine);

                        mgr.ProcessRequest(removeManyRequest, client);
                    }
                    else if (dataRequest is PutRequest putRequest)
                    {
                        var mgr = new PutManager(PersistenceEngine, _serviceContainer.FeedSessionManager, dataStore, _serviceContainer.Log);

                        mgr.ProcessRequest(putRequest, client);
                    }
                    else if (dataRequest is DomainDeclarationRequest domainDeclarationRequest)
                    {
                        var mgr = new CacheOnlyManager(dataStore);

                        mgr.ProcessRequest(domainDeclarationRequest, client);
                    }

                    else if (dataRequest is EvictionSetupRequest evictionSetupRequest)
                    {
                        var mgr = new CacheOnlyManager(dataStore);

                        mgr.ProcessRequest(evictionSetupRequest, client);
                    }
                }, dataRequest.CollectionName);
            }
            else
            {
                if (dataRequest.SessionId != default)// request inside a consistent read context
                {
                    if (lockManager.CheckLock(dataRequest.SessionId, false, dataRequest.CollectionName))
                    {
                        if (dataRequest is GetRequest getRequest)
                        {
                            new QueryManager(dataStore, _serviceContainer.Log).ProcessRequest(getRequest, client);
                        }
                        else if (dataRequest is EvalRequest evalRequest)
                        {
                            new QueryManager(dataStore).ProcessRequest(evalRequest, client);
                        }
                        else if (dataRequest is PivotRequest pivotRequest)
                        {
                            new QueryManager(dataStore).ProcessRequest(pivotRequest, client);
                        }
                    }
                    else
                    {
                        throw new NotSupportedException("Data request with session received but no session is active");
                    }
                }
                else // simple request
                {
                    lockManager.DoWithReadLock(() =>
                    {
                        if (dataRequest is GetRequest getRequest)
                        {
                            new QueryManager(dataStore, _serviceContainer.Log).ProcessRequest(getRequest, client);
                        }
                        else if (dataRequest is EvalRequest evalRequest)
                        {
                            new QueryManager(dataStore).ProcessRequest(evalRequest, client);
                        }
                        else if (dataRequest is PivotRequest pivotRequest)
                        {
                            new QueryManager(dataStore).ProcessRequest(pivotRequest, client);
                        }
                    }, dataRequest.CollectionName);
                }
            }

            Dbg.Trace($"end processing {dataRequest.AccessType} request on server {ShardIndex}");
        }