Exemplo 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);
        }
Exemplo 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);
        }
Exemplo 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 = GetSlideCheckingsByUser <T>(courseId, slideId, userId, noTracking: false)
                                .AsEnumerable()
                                .Where(c => !c.IsChecked && !c.IsLocked)
                                .ToList();
                foreach (var checking in checkings)
                {
                    checking.PreRemove(db);
                    db.Set <T>().Remove(checking);
                }

                await db.SaveChangesAsync().ConfigureAwait(false);

                transaction?.Commit();
            }
        }