hn-dotnet/Application/VoteForLink/VoteForLinkCommandHandler.cs
Julien Leicher 7a9aefbefc tiny-refactors (#27)
add UnitWorkBehavior and some files moving
add Docker stuff to prepare heroku deployment
rename (Up/Down)vote
add sample for msbuild tasks
2020-12-17 12:01:11 +01:00

37 lines
1.0 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using HN.Domain;
using MediatR;
namespace HN.Application
{
public sealed class VoteForLinkCommandHandler : IRequestHandler<VoteForLinkCommand>
{
private readonly ILinkRepository _linkRepository;
private readonly IExecutingUserProvider _executingUserProvider;
public VoteForLinkCommandHandler(ILinkRepository linkRepository, IExecutingUserProvider executingUserProvider)
{
_linkRepository = linkRepository;
_executingUserProvider = executingUserProvider;
}
public async Task<Unit> Handle(VoteForLinkCommand request, CancellationToken cancellationToken)
{
var link = await _linkRepository.GetByIdAsync(request.LinkId);
var userId = _executingUserProvider.GetCurrentUserId();
switch (request.Type)
{
case VoteType.Up:
link.UpvoteBy(userId);
break;
case VoteType.Down:
link.DownvoteBy(userId);
break;
}
return Unit.Value;
}
}
}