public async Task <ActionResult <TrainerRelationship> > GetAsync(string name) { try { var trainer = await _trainerRepository.GetAsync(name); var entries = await _dexEntryRepository.GetTrainerEntriesAsync(name); var relationship = new TrainerRelationship { Trainer = trainer, Pokémon = entries?.Select(e => new Pokémon { Id = e.PokémonId }).ToList() }; return(Ok(relationship)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e)); } }
public async Task <ActionResult> PutAsync(string name, [FromBody] TrainerRelationship value) { try { if (value.Trainer.Name != name) { return(BadRequest()); } var entries = value.Pokémon.Select(p => new DexEntry { PokémonId = p.Id, TrainerName = value.Trainer.Name }).ToList(); await _trainerRepository.PutAsync(value.Trainer); await _dexEntryRepository.PutTrainerEntriesAsync(entries, true); return(Ok()); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e)); } }