コード例 #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));
                }
            }
        }
コード例 #2
0
        public async Task DeleteGame(Guid id)
        {
            using (var context = dbContext())
            {
                var g = context.Games.Query().FirstOrDefault(x => x.Id == id);
                if (g == null)
                {
                    events.PublishOnBackgroundThread(new GameResultDeleted(id));
                    return;
                    // throw new ArgumentException(string.Format("Game with id '{0}' not found", id), "id");
                }

                // work around old bug
                var deleted = context.DeletedGames.Find(id);
                if (deleted != null)
                {
                    context.DeletedGames.Remove(deleted);
                    context.SaveChanges();
                }

                // move to deleted table
                deleted = new DeletedGameResult();
                deleted.InjectFrom(g);
                deleted.DeletedDate = DateTime.Now;
                context.DeletedGames.Add(deleted);

                var arenaId = g.ArenaSessionId;
                var victory = g.Victory;
                context.Games.Remove(g);
                await context.SaveChangesAsync();

                ArenaSession arena = null;
                if (arenaId != null)
                {
                    arena = context.ArenaSessions.Query().FirstOrDefault(x => x.Id == arenaId);
                    if (arena != null)
                    {
                        //if (victory && arena.IncompleteWins)
                        //{
                        //    arena.Wins--;
                        //}
                        //else if (!victory && arena.IncompleteLosses)
                        //{
                        //    arena.Losses--;
                        //}
                        if (victory)
                        {
                            arena.Wins--;
                        }
                        else
                        {
                            arena.Losses--;
                        }

                        arena.EndDate  = null;
                        arena.Modified = DateTime.Now;
                    }
                }

                await context.SaveChangesAsync();

                events.PublishOnBackgroundThread(new GameResultDeleted(id, arenaId));
                if (arena != null)
                {
                    events.PublishOnBackgroundThread(new ArenaSessionUpdated(arena.Id));
                }
            }
        }
コード例 #3
0
        public async Task DeleteGame(Guid id)
        {
            using (var context = this.dbContext())
            {
                var g = context.Games.Query().FirstOrDefault(x => x.Id == id);
                if (g == null)
                {
                    this.events.PublishOnBackgroundThread(new GameResultDeleted(id));
                    return;
                    // throw new ArgumentException(string.Format("Game with id '{0}' not found", id), "id");
                }

                // work around old bug
                var deleted = context.DeletedGames.Find(id);
                if (deleted != null)
                {
                    context.DeletedGames.Remove(deleted);
                    context.SaveChanges();
                }

                // move to deleted table
                deleted = new DeletedGameResult();
                deleted.InjectFrom(g);
                deleted.DeletedDate = DateTime.Now;
                context.DeletedGames.Add(deleted);

                var arenaId = g.ArenaSessionId;
                var victory = g.Victory;
                context.Games.Remove(g);
                await context.SaveChangesAsync();

                ArenaSession arena = null;
                if (arenaId != null)
                {
                    arena = context.ArenaSessions.Query().FirstOrDefault(x => x.Id == arenaId);
                    if (arena != null)
                    {
                        //if (victory && arena.IncompleteWins)
                        //{
                        //    arena.Wins--;
                        //}
                        //else if (!victory && arena.IncompleteLosses)
                        //{
                        //    arena.Losses--;
                        //}
                        if (victory)
                        {
                            arena.Wins--;
                        }
                        else
                        {
                            arena.Losses--;
                        }

                        arena.EndDate = null;
                        arena.Modified = DateTime.Now;
                    }
                }

                await context.SaveChangesAsync();
                this.events.PublishOnBackgroundThread(new GameResultDeleted(id, arenaId));
                if (arena != null)
                {
                    this.events.PublishOnBackgroundThread(new ArenaSessionUpdated(arena.Id));
                }
            }
        }
コード例 #4
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));
                }
            }
        }