Handler.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Admin.Payment.Toss.Cancel.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 cancel = await db.TossCancel.AsNoTracking().Include(c => c.Member).FirstOrDefaultAsync(c => c.ID == request.ID, ct) ?? throw new InvalidOperationException("토스 취소 내역을 찾을 수 없습니다.");
  10. return new Response
  11. {
  12. ID = cancel.ID,
  13. MemberID = cancel.MemberID,
  14. MemberEmail = cancel.Member?.Email ?? string.Empty,
  15. MemberName = cancel.Member?.Name,
  16. PaymentKey = cancel.PaymentKey,
  17. OrderID = cancel.OrderID,
  18. CancelAmount = cancel.CancelAmount,
  19. CancelReason = cancel.CancelReason,
  20. CancelRequester = cancel.CancelRequester,
  21. ResponseCode = cancel.ResponseCode,
  22. ResponseMessage = cancel.ResponseMessage,
  23. Status = cancel.Status,
  24. TransactionKey = cancel.TransactionKey,
  25. CanceledAt = cancel.CanceledAt,
  26. CreatedAt = cancel.CreatedAt,
  27. UpdatedAt = cancel.UpdatedAt
  28. };
  29. }
  30. }