public async Task <IActionResult> PutUser(User user) { _context.Update(user); await _context.SaveChangesAsync(); return(Ok()); }
public async Task <IActionResult> PutEncounter(Encounter encounter) { await _context.Database.BeginTransactionAsync(); var server = await _context.Encounters .Include(o => o.Waves) .ThenInclude(o => o.Monsters) .SingleOrDefaultAsync(o => o.EncounterId == encounter.EncounterId); if (server == null) { return(BadRequest("The encounter does not exist.")); } foreach (var wave in server.Waves.ToList()) { var localWave = encounter.Waves.SingleOrDefault(o => o.WaveId == wave.WaveId); if (localWave == null) { server.Waves.Remove(wave); } else { foreach (var monster in wave.Monsters.ToList()) { var localMonster = localWave.Monsters.SingleOrDefault(o => o.Index == monster.Index); if (localMonster == null) { wave.Monsters.Remove(monster); } } } } await _context.SaveChangesAsync(); server.EncounterName = encounter.EncounterName; foreach (var wave in encounter.Waves) { if (wave.WaveId == 0) { server.Waves.Add(wave); continue; } var serverWave = server.Waves.SingleOrDefault(o => o.WaveId == wave.WaveId); if (serverWave != null) { serverWave.Sort = wave.Sort; foreach (var monster in wave.Monsters) { if (monster.WaveId == 0) { serverWave.Monsters.Add(monster); continue; } var serverMonster = serverWave.Monsters.SingleOrDefault(o => o.Index == monster.Index); if (serverMonster != null) { serverMonster.Count = monster.Count; serverMonster.Sort = monster.Sort; } else { serverWave.Monsters.Add(monster); } } } } await _context.SaveChangesAsync(); _context.Database.CommitTransaction(); return(Ok("Successfully updated encounter.")); }