public List <BlackboardGrade> GetGrades(int RowsCount) { var grades = new List <BlackboardGrade>(); var unpulledGradesListCacheKey = CacheSchema.SortedSets.KeyBlackboardGradeUnpulled(); var pulledGradesListCacheKey = CacheSchema.SortedSets.KeyBlackboardGradePulled(RequestIdManager.RequestId); var pulledGradesHistoryListCacheKey = CacheSchema.SortedSets.KeyBlackboardGradePulledHistory(); using (var redisCacheManager = new RedisCacheManager()) { var gradesKeys = PeekGrades(RowsCount); var gradesCacheKeys = gradesKeys.Select(x => new SimpleCacheKey(x)).ToList(); grades = redisCacheManager.GetMultiple <BlackboardGrade>(gradesCacheKeys).ToList(); // transfer keys from UNPULLED list to PULLED list // + add the current PULLED list key to the PULLED History list (to avoid the search on 'SearchPulledGradesLists') if (grades.Count > 0) { var actionAddGradeKeysToPulledList = new RedisTransactionAction(eRedisTransactionActionType.AddToUniqueList, pulledGradesListCacheKey, gradesKeys); var actionRemoveGradeKeysFromUnpulledList = new RedisTransactionAction(eRedisTransactionActionType.RemoveFromUniqueList, unpulledGradesListCacheKey, gradesKeys); var actionAddPulledListToHistory = new RedisTransactionAction(eRedisTransactionActionType.AddToUniqueList, pulledGradesHistoryListCacheKey, new List <string> { pulledGradesListCacheKey.KeyString }); redisCacheManager.MakeTransaction(actionAddGradeKeysToPulledList, actionRemoveGradeKeysFromUnpulledList, actionAddPulledListToHistory); } } return(grades); }
public bool SaveGrade(BlackboardGrade grade) { if (string.IsNullOrWhiteSpace(grade.CustomerId)) { throw new ArgumentNullException("parameter customerId is null/whitespace"); } if (string.IsNullOrWhiteSpace(grade.CourseId)) { throw new ArgumentNullException("parameter courseId is null/whitespace"); } if (string.IsNullOrWhiteSpace(grade.AssignmentId)) { throw new ArgumentNullException("parameter assignmentId is null/whitespace"); } if (grade == null) { throw new ArgumentNullException("parameter grade is null"); } var gradeCacheKey = CacheSchema.KeyBlackboardGrade(typeof(BlackboardGrade), grade.CustomerId, grade.CourseId, grade.AssignmentId, grade.id); var unpulledGradesListCacheKey = CacheSchema.SortedSets.KeyBlackboardGradeUnpulled(); var gradeExpiryOnRedisInDays = Convert.ToInt32(CloudConfig.Get("BLACKBOARD_GRADE_EXPIRY_ON_REDIS_IN_DAYS", "7")); var ExpiryDate = DateTime.Now.AddDays(gradeExpiryOnRedisInDays).AddMinutes(CommonConfig.Cache.LowCacheTimeOutInMinutes); //redisCacheManager.Set(gradeCacheKey, grade, ExpiryDate); var actionSetGrade = new RedisTransactionAction(eRedisTransactionActionType.Set, gradeCacheKey, grade); actionSetGrade.Properties.Add("EXPIRY", ExpiryDate); //redisCacheManager.AddToUniqueList(unpulledGradesListCacheKey, gradeCacheKey.CacheKey); var actionAddGradeKeyToList = new RedisTransactionAction(eRedisTransactionActionType.AddToUniqueList, unpulledGradesListCacheKey, new List <string> { gradeCacheKey.KeyString }); using (var redisCacheManager = new RedisCacheManager()) return(redisCacheManager.MakeTransaction(actionSetGrade, actionAddGradeKeyToList)); }