public async Task <Result <PlaylistDto> > Handle(AddSubredditToPlaylistCommand command, CancellationToken cancellationToken) { var playlist = await _context.Playlists.Include(x => x.Subreddits).FirstOrDefaultAsync(playlist => playlist.Id == command.PlaylistId); if (playlist == null) { return((await Result <PlaylistDto> .FailAsync("Playlist not found")) as Result <PlaylistDto>); } if (playlist.Subreddits.Any(subreddit => subreddit.Id == command.SubredditId)) { return((await Result <PlaylistDto> .FailAsync("Subreddit is already in the playlist")) as Result <PlaylistDto>); } var subreddit = await _context.Subreddits.FirstOrDefaultAsync(subreddit => subreddit.Id == command.SubredditId); if (subreddit == null) { return((await Result <PlaylistDto> .FailAsync("Subreddit not found")) as Result <PlaylistDto>); } playlist.Subreddits.Add(subreddit); _context.Playlists.Update(playlist); await _context.SaveChangesAsync(cancellationToken); var dto = _mapper.Map <PlaylistDto>(playlist); dto.Subreddits = _mapper.Map <IEnumerable <SubredditDto> >(playlist.Subreddits); return((await Result <PlaylistDto> .SuccessAsync(dto, "Subreddit added")) as Result <PlaylistDto>); }
public async Task <IActionResult> AddSubreddit(AddSubredditToPlaylistCommand command) { return(Ok(await Mediator.Send(command))); }