namespace WalletService.API.Application.Queries;
using MediatR;
using WalletService.Domain.AggregatesModel.PointAccountAggregate;
///
/// EN: Handler for GetPointAccountQuery
/// VI: Handler cho GetPointAccountQuery
///
public class GetPointAccountQueryHandler : IRequestHandler
{
private readonly IPointAccountRepository _pointAccountRepository;
public GetPointAccountQueryHandler(IPointAccountRepository pointAccountRepository)
{
_pointAccountRepository = pointAccountRepository;
}
public async Task Handle(
GetPointAccountQuery request,
CancellationToken cancellationToken)
{
var account = await _pointAccountRepository.GetByUserIdAsync(request.UserId);
if (account == null)
return null;
return new PointAccountDto(
account.Id,
account.UserId,
account.TotalPoints,
account.AvailablePoints,
account.CreatedAt,
account.UpdatedAt
);
}
}