コード例 #1
0
        private TeamCacheItem GetTeamItemFromCacheOrLoad(int projectId, Guid participantId)
        {
            var key = string.Format("{0}|{1}", projectId, participantId);

            lock (teamCache)
            {
                var item = teamCache.Get(key);
                if (item != null)
                {
                    return(item);
                }

                item = teamCache.Get(string.Format("{0}|{1}", 0, participantId));
                if (item != null)
                {
                    return(new TeamCacheItem(false, ProjectTeamSecurity.None));
                }

                List <object[]> projectList;

                using (var db = new DbManager(DatabaseId))
                {
                    projectList = db.ExecuteList(
                        new SqlQuery(ParticipantTable)
                        .Select("project_id", "security")
                        .Where("tenant", Tenant)
                        .Where("participant_id", participantId.ToString())
                        .Where("removed", false));
                }

                var teamCacheItem = new TeamCacheItem(true, ProjectTeamSecurity.None);
                teamCache.Add(string.Format("{0}|{1}", 0, participantId), teamCacheItem);

                foreach (var prj in projectList)
                {
                    teamCacheItem = new TeamCacheItem(true, (ProjectTeamSecurity)Convert.ToInt32(prj[1]));
                    key           = string.Format("{0}|{1}", prj[0], participantId);
                    teamCache.Add(key, teamCacheItem);
                }

                var currentProject = projectList.Find(r => Convert.ToInt32(r[0]) == projectId);
                teamCacheItem = new TeamCacheItem(currentProject != null,
                                                  currentProject != null
                                                      ? (ProjectTeamSecurity)Convert.ToInt32(currentProject[1])
                                                      : ProjectTeamSecurity.None);
                key = string.Format("{0}|{1}", projectId, participantId);
                teamCache.Add(key, teamCacheItem);
                return(teamCacheItem);
            }
        }
コード例 #2
0
ファイル: ProjectDao.cs プロジェクト: vipwan/CommunityServer
        private TeamCacheItem GetTeamItemFromCacheOrLoad(int projectId, Guid participantId)
        {
            var key = string.Format("{0}|{1}", projectId, participantId);

            lock (TeamCache)
            {
                var item = TeamCache.Get(key);
                if (item != null) return item;

                item = TeamCache.Get(string.Format("{0}|{1}", 0, participantId));
                if (item != null) return new TeamCacheItem(false, ProjectTeamSecurity.None);
            }

            List<object[]> projectList;
            
            using (var db = new DbManager(DatabaseId))
            {
                projectList = db.ExecuteList(
                    new SqlQuery(ParticipantTable)
                        .Select("project_id", "security")
                        .Where("tenant", Tenant)
                        .Where("participant_id", participantId.ToString())
                        .Where("removed", false));
            }
           
            lock (TeamCache)
            {
                var teamCacheItem = new TeamCacheItem(true, ProjectTeamSecurity.None);
                TeamCache.Add(string.Format("{0}|{1}", 0, participantId), teamCacheItem);

                foreach (var prj in projectList)
                {
                    teamCacheItem = new TeamCacheItem(true, (ProjectTeamSecurity)Convert.ToInt32(prj[1]));
                    key = string.Format("{0}|{1}", prj[0], participantId);
                    TeamCache.Add(key, teamCacheItem);
                }

                var currentProject = projectList.Find(r => Convert.ToInt32(r[0]) == projectId);
                teamCacheItem = new TeamCacheItem(currentProject != null, currentProject != null ? (ProjectTeamSecurity)Convert.ToInt32(currentProject[1]) : ProjectTeamSecurity.None);
                key = string.Format("{0}|{1}", projectId, participantId);
                TeamCache.Add(key, teamCacheItem);
                return teamCacheItem;
            }
        }