myhn/Application/GetLinks/GetLinksQueryHandler.cs
2021-01-08 16:26:19 +01:00

42 lines
1.3 KiB
C#

using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediatR;
using MyHN.Domain;
namespace MyHN.Application
{
public class GetLinksQueryHandler : IRequestHandler<GetLinksQuery, LinkDto[]>
{
private readonly IContext _context;
public GetLinksQueryHandler(IContext context)
{
_context = context;
}
public Task<LinkDto[]> Handle(GetLinksQuery request, CancellationToken cancellationToken)
{
var result = from link in _context.Links
join user in _context.Users on link.CreatedBy equals user.Id
select new LinkDto
{
Id = link.Id,
Url = link.Url,
CreatedAt = link.CreatedAt,
CreatedByName = user.UserName,
UpvotesCount = link.Votes.Count(v => v.Direction == VoteType.Up),
DownvotesCount = link.Votes.Count(v => v.Direction == VoteType.Down)
};
return Task.FromResult(result.OrderByDescending(o => o.CreatedAt).ToArray());
// return Task.FromResult(_context.Links.Select(o => new LinkDto
// {
// Id = o.Id,
// Url = o.Url,
// CreatedAt = o.CreatedAt
// }).OrderByDescending(o => o.CreatedAt).ToArray());
}
}
}