public async Task <ActionResult <ActionResult <Character> > > AssignExistedEpisodeWithCharacter(int characterId, int episodeId) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var character = _characterRepository.GetCharacter(characterId); if (character == null) { return(NotFound()); } var episode = await _episodeRepository.GetEpisodeAsync(episodeId); if (episode == null) { return(NotFound()); } if (await _characterRepository.HasEpisodeAssignedAsync(characterId, episodeId)) { return(BadRequest("Episode already assigned to character")); } _episodeRepository.CreateEpisodeAndAssignCharacter(character, episode); await _episodeRepository.SaveChangesAsync(); return(CreatedAtAction( "GetCharacter", new { characterId }, character)); }
public async Task AssignNewEpisodeToCharacter(Character character, Episode episode) { if (await _episodeRepository.EpisodeNameExistsAsync(episode.EpisodeName)) { throw new InvalidOperationException($"{episode.EpisodeName} already exists"); } _episodeRepository.CreateEpisodeAndAssignCharacter(character, episode); await _characterRepository.SaveChangesAsync(); }