Ejemplo n.º 1
0
        private IQueryable <T> GetSlideCheckingsByUsers <T>(string courseId, Guid slideId, IEnumerable <string> userIds, bool noTracking = true) where T : AbstractSlideChecking
        {
            IQueryable <T> dbRef = db.Set <T>();

            if (noTracking)
            {
                dbRef = dbRef.AsNoTracking();
            }
            var items = dbRef.Where(c => c.CourseId == courseId && c.SlideId == slideId && userIds.Contains(c.UserId));

            return(items);
        }
Ejemplo n.º 2
0
        private IEnumerable <T> GetSlideCheckingsByUser <T>(string courseId, Guid slideId, string userId, bool noTracking = true) where T : AbstractSlideChecking
        {
            IQueryable <T> dbRef = db.Set <T>();

            if (noTracking)
            {
                dbRef = dbRef.AsNoTracking();
            }
            var items = dbRef.Where(c => c.CourseId == courseId && c.SlideId == slideId && c.UserId == userId).ToList();

            return(items);
        }
Ejemplo n.º 3
0
        public async Task RemoveWaitingManualCheckings <T>(string courseId, Guid slideId, string userId, bool startTransaction = true) where T : AbstractManualSlideChecking
        {
            using (var transaction = startTransaction ? db.Database.BeginTransaction() : null)
            {
                var checkings = (await GetSlideCheckingsByUser <T>(courseId, slideId, userId)
                                 .ToListAsync())
                                .Where(c => !c.IsChecked && !c.IsLocked)
                                .ToList();
                foreach (var checking in checkings)
                {
                    checking.PreRemove(db);
                    db.Set <T>().Remove(checking);
                }

                await db.SaveChangesAsync();

                if (transaction != null)
                {
                    await transaction.CommitAsync();
                }
            }
        }
Ejemplo n.º 4
0
 public override void PreRemove(UlearnDb db)
 {
     db.Set <ExerciseCodeReview>().RemoveRange(Reviews);
 }