Exemplo n.º 1
0
        public async Task DeleteArenaSession(Guid arenaId)
        {
            using (var context = dbContext())
            {
                var arena = context.ArenaSessions.Query().FirstOrDefault(x => x.Id == arenaId);
                if (arena == null)
                {
                    return;
                }
                var arenaModel = arena.ToModel();

                var deletedArena = new DeletedArenaSession();
                deletedArena.InjectFrom(arena);
                deletedArena.DeletedDate = DateTime.Now;
                foreach (var game in arena.Games)
                {
                    var deletedGame = new DeletedGameResult();
                    deletedGame.InjectFrom(game);
                    deletedGame.DeletedDate = DateTime.Now;
                    deletedArena.Games.Add(deletedGame);
                }

                context.Games.RemoveRange(arena.Games);
                context.DeletedArenaSessions.Add(deletedArena);

                if (arena.Image1 != null)
                {
                    var img = context.ArenaDeckImages.Find(arena.Image1.Id);
                    context.ArenaDeckImages.Remove(img);
                }
                if (arena.Image2 != null)
                {
                    var img = context.ArenaDeckImages.Find(arena.Image2.Id);
                    context.ArenaDeckImages.Remove(img);
                }
                context.ArenaSessions.Remove(arena);
                await context.SaveChangesAsync();

                events.PublishOnBackgroundThread(new ArenaSessionDeleted(arenaModel));
                foreach (var deletedGame in deletedArena.Games)
                {
                    events.PublishOnBackgroundThread(new GameResultDeleted(deletedGame.Id, deletedGame.ArenaSessionId));
                }
            }
        }
Exemplo n.º 2
0
        public async Task DeleteArenaSession(Guid arenaId)
        {
            using (var context = this.dbContext())
            {
                var arena = context.ArenaSessions.Query().FirstOrDefault(x => x.Id == arenaId);
                if (arena == null) return;
                var arenaModel = arena.ToModel();

                var deletedArena = new DeletedArenaSession();
                deletedArena.InjectFrom(arena);
                deletedArena.DeletedDate = DateTime.Now;
                foreach (var game in arena.Games)
                {
                    var deletedGame = new DeletedGameResult();
                    deletedGame.InjectFrom(game);
                    deletedGame.DeletedDate = DateTime.Now;
                    deletedArena.Games.Add(deletedGame);
                }

                context.Games.RemoveRange(arena.Games);
                context.DeletedArenaSessions.Add(deletedArena);

                if (arena.Image1 != null)
                {
                    var img = context.ArenaDeckImages.Find(arena.Image1.Id);
                    context.ArenaDeckImages.Remove(img);
                }
                if (arena.Image2 != null)
                {
                    var img = context.ArenaDeckImages.Find(arena.Image2.Id);
                    context.ArenaDeckImages.Remove(img);
                }
                context.ArenaSessions.Remove(arena);
                await context.SaveChangesAsync();
                this.events.PublishOnBackgroundThread(new ArenaSessionDeleted(arenaModel));
                foreach (var deletedGame in deletedArena.Games)
                {
                    this.events.PublishOnBackgroundThread(new GameResultDeleted(deletedGame.Id, deletedGame.ArenaSessionId));
                }
            }
        }