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); } }
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; } }