Handler.cs 891 B

123456789101112131415161718192021222324
  1. using Application.Abstractions.Data;
  2. using MediatR;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Member.Wallet.List.Get;
  5. public sealed class Handler(IAppDbContext db) : IRequestHandler<Query, Response>
  6. {
  7. public async Task<Response> Handle(Query request, CancellationToken ct)
  8. {
  9. var wallet = await db.Wallet.AsNoTracking().Include(x => x.Member).ThenInclude(m => m.MemberGrade).Include(x => x.Balances).FirstOrDefaultAsync(x => x.ID == request.Id, ct);
  10. if (wallet is null) throw new KeyNotFoundException("지갑을 찾을 수 없습니다.");
  11. return new Response
  12. {
  13. WalletID = wallet.ID,
  14. Balance = (long)wallet.GetTotalAvailable().Value,
  15. MemberID = wallet.MemberID,
  16. MemberEmail = wallet.Member.Email,
  17. GradeName = wallet.Member.MemberGrade?.KorName
  18. };
  19. }
  20. }