コード例 #1
0
    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>);
    }
コード例 #2
0
 public async Task <IActionResult> AddSubreddit(AddSubredditToPlaylistCommand command)
 {
     return(Ok(await Mediator.Send(command)));
 }