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