Handler.cs 954 B

123456789101112131415161718192021222324252627
  1. using Application.Abstractions.Messaging;
  2. using Application.Abstractions.Data;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Admin.Member.Wallet.List.Get;
  5. public sealed class Handler(IAppDbContext db) : IQueryHandler<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)
  11. {
  12. throw new KeyNotFoundException("지갑을 찾을 수 없습니다.");
  13. }
  14. return new Response
  15. {
  16. WalletID = wallet.ID,
  17. Balance = (long)wallet.GetTotalAvailable().Value,
  18. MemberID = wallet.MemberID,
  19. MemberEmail = wallet.Member.Email,
  20. GradeName = wallet.Member.MemberGrade?.KorName
  21. };
  22. }
  23. }