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)); } } }
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)); } } }
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)); } } }
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)); } } }