public static void MapFrom(this ArenaSessionModel target, ArenaSession source) { target.InjectFrom(source); // target.Games.IsNotifying = false; target.Games.Clear(); target.Games.AddRange(source.Games.Select(g => g.ToModel())); // target.Games.IsNotifying = true; // target.Games.Refresh(); }
public static ArenaSessionModel ToModel(this ArenaSession arena, int arenaSessionRecurse = 0) { if (arena == null) { return null; } ArenaSessionModel model = null; model = new ArenaSessionModel(); model.InjectFrom(arena); model.Games.AddRange(arena.Games.Select(x => x.ToModel(arenaSessionRecurse, model))); return model; }
public static ArenaSessionModel ToModel(this ArenaSession arena, int arenaSessionRecurse = 0) { if (arena == null) { return(null); } ArenaSessionModel model = null; model = new ArenaSessionModel(); model.InjectFrom(arena); model.Games.AddRange(arena.Games.Select(x => x.ToModel(arenaSessionRecurse, model))); return(model); }
public async Task Retire(ArenaSessionModel arenaModel) { using (var context = this.dbContext()) { var arena = context.ArenaSessions.Query().First(x => x.Id == arenaModel.Id); arena.Retired = true; if (arena.EndDate == null) { arena.EndDate = DateTime.Now; } arena.Modified = DateTime.Now; await context.SaveChangesAsync(); arenaModel.InjectFrom(arena); } }
public async Task AssignGameToArena(GameResultModel gameModel, ArenaSessionModel arenaModel) { using (var context = this.dbContext()) { // var lastGame = context.Games.Where(x => x.ArenaSessionId == arenaModel.Id).OrderByDescending(x => x.ArenaGameNo).FirstOrDefault(); var arena = context.ArenaSessions.Query().First(x => x.Id == arenaModel.Id); var game = context.Games.Query().First(x => x.Id == gameModel.Id); // game.ArenaGameNo = lastGame == null ? 1 : lastGame.ArenaGameNo + 1; AddGameToArena(game, arena); SetEndDateIfNeeded(arena); arena.Modified = DateTime.Now; game.Modified = DateTime.Now; await context.SaveChangesAsync(); gameModel.InjectFrom(game); arenaModel.InjectFrom(arena); gameModel.ArenaSession = arenaModel; arenaModel.Games.Add(gameModel); } }
public async Task UpdateArenaSession(ArenaSessionModel arenaModel) { using (var context = this.dbContext()) { var arena = context.ArenaSessions.Query().FirstOrDefault(x => x.Id == arenaModel.Id); if (arena == null) { throw new ArgumentException("arena does not exist", "arenaModel"); } if (!Equals(arenaModel.Hero, arena.Hero)) { arena.Hero = context.Heroes.Find(arenaModel.Hero.Id); } if (arenaModel.Image1 != null) { var img = context.ArenaDeckImages.Find(arenaModel.Image1.Id); if (img == null) { img = arenaModel.Image1; context.ArenaDeckImages.Add(img); } context.Entry(img).CurrentValues.SetValues(arenaModel.Image1); arena.Image1 = img; } if (arenaModel.Image2 != null) { var img = context.ArenaDeckImages.Find(arenaModel.Image2.Id); if (img == null) { img = arenaModel.Image2; context.ArenaDeckImages.Add(img); } context.Entry(img).CurrentValues.SetValues(arenaModel.Image2); arena.Image2 = img; } context.Entry(arena).CurrentValues.SetValues(arenaModel); SetEndDateIfNeeded(arena); arena.Modified = DateTime.Now; await context.SaveChangesAsync(); arena = context.ArenaSessions.Query().First(x => x.Id == arena.Id); var latestId = context.ArenaSessions.OrderByDescending(x => x.StartDate).Select(x => x.Id).FirstOrDefault(); arenaModel.InjectFrom(arena); this.events.PublishOnBackgroundThread(new ArenaSessionUpdated(arenaModel.Id, latestId == arena.Id)); } }
public async Task<ArenaSessionModel> AddArenaSession(ArenaSessionModel arenaModel) { using (var context = this.dbContext()) { var arena = new ArenaSession(); arena.InjectFrom(arenaModel); if (arenaModel.Hero != null) { arena.Hero = context.Heroes.Find(arenaModel.Hero.Id); } if (arenaModel.Image1 != null) { var img = context.ArenaDeckImages.Find(arenaModel.Image1.Id); if (img == null) { img = arenaModel.Image1; context.ArenaDeckImages.Add(img); } context.Entry(img).CurrentValues.SetValues(arenaModel.Image1); arena.Image1 = img; } if (arenaModel.Image2 != null) { var img = context.ArenaDeckImages.Find(arenaModel.Image2.Id); if (img == null) { img = arenaModel.Image2; context.ArenaDeckImages.Add(img); } context.Entry(img).CurrentValues.SetValues(arenaModel.Image2); arena.Image2 = img; } context.ArenaSessions.Add(arena); await context.SaveChangesAsync(); arenaModel.InjectFrom(arena); } this.events.PublishOnBackgroundThread(new ArenaSessionAdded(arenaModel)); return arenaModel; }