Handler.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Admin.Payment.Danal.Confirm.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 confirm = await db.DanalConfirm.AsNoTracking()
  10. .Include(x => x.Member)
  11. .Include(x => x.PaymentOrder)
  12. .FirstOrDefaultAsync(x => x.ID == request.ID, ct)
  13. ?? throw new InvalidOperationException("다날 결제 내역을 찾을 수 없습니다.");
  14. var cancel = await db.DanalCancel.AsNoTracking()
  15. .Where(c => c.PaymentOrderID == confirm.PaymentOrderID && c.ResponseCode == "0000")
  16. .OrderByDescending(c => c.ID)
  17. .Select(c => new Response.CancelData
  18. {
  19. ID = c.ID,
  20. CancelType = c.CancelType,
  21. Amount = c.Amount,
  22. ResponseCode = c.ResponseCode,
  23. ResponseMessage = c.ResponseMessage,
  24. CancelledAmount = c.CancelledAmount,
  25. CreatedAt = c.CreatedAt
  26. })
  27. .FirstOrDefaultAsync(ct);
  28. return new Response
  29. {
  30. Confirm = new Response.ConfirmData
  31. {
  32. ID = confirm.ID,
  33. MemberID = confirm.MemberID,
  34. MemberEmail = confirm.Member?.Email ?? string.Empty,
  35. MemberName = confirm.Member?.Name,
  36. Method = confirm.Method,
  37. TransactionID = confirm.TransactionID,
  38. OrderID = confirm.OrderID,
  39. Amount = confirm.Amount,
  40. MerchantID = confirm.MerchantID,
  41. OrderStatus = confirm.PaymentOrder != null ? confirm.PaymentOrder.Status : default,
  42. OrderPaidAt = confirm.PaymentOrder?.PaidAt,
  43. OrderCancelledAt = confirm.PaymentOrder?.CancelledAt,
  44. OrderName = confirm.OrderName,
  45. ResponseCode = confirm.ResponseCode,
  46. ResponseMessage = confirm.ResponseMessage,
  47. TotalAmount = confirm.TotalAmount,
  48. DiscountAmount = confirm.DiscountAmount,
  49. UserName = confirm.UserName,
  50. TransDate = confirm.TransDate,
  51. TransTime = confirm.TransTime,
  52. CardCode = confirm.CardCode,
  53. CardName = confirm.CardName,
  54. CardNo = confirm.CardNo,
  55. InstallmentMonths = confirm.InstallmentMonths,
  56. ApproveNo = confirm.ApproveNo,
  57. ApprovalDateTime = confirm.ApprovalDateTime,
  58. AuthKey = confirm.AuthKey,
  59. AccountNumber = confirm.AccountNumber,
  60. BankCode = confirm.BankCode,
  61. UserId = confirm.UserId,
  62. UserEmail = confirm.UserEmail,
  63. BankName = confirm.BankName,
  64. ExpireDate = confirm.ExpireDate,
  65. ExpireTime = confirm.ExpireTime,
  66. VirtualAccountNumber = confirm.VirtualAccountNumber,
  67. UseCashReceipt = confirm.UseCashReceipt,
  68. CreatedAt = confirm.CreatedAt,
  69. UpdatedAt = confirm.UpdatedAt
  70. },
  71. Cancel = cancel
  72. };
  73. }
  74. }