using Application.Abstractions.Data; using Application.Abstractions.Messaging; using Microsoft.EntityFrameworkCore; namespace Application.Features.Admin.Payment.Danal.Cancel.Get; public sealed class Handler(IAppDbContext db) : IQueryHandler { public async Task Handle(Query request, CancellationToken ct) { var cancel = await db.DanalCancel.AsNoTracking() .Include(x => x.Member) .FirstOrDefaultAsync(x => x.ID == request.ID, ct) ?? throw new InvalidOperationException("다날 취소 내역을 찾을 수 없습니다."); return new Response { ID = cancel.ID, MemberID = cancel.MemberID, MemberEmail = cancel.Member?.Email ?? string.Empty, MemberName = cancel.Member?.Name, Method = cancel.Method, CancelType = cancel.CancelType, TransactionID = cancel.TransactionID, OrderID = cancel.OrderID, Amount = cancel.Amount, MerchantID = cancel.MerchantID, CancelRequester = cancel.CancelRequester, CancelReason = cancel.CancelReason, ResponseCode = cancel.ResponseCode, ResponseMessage = cancel.ResponseMessage, OriginalTransactionID = cancel.OriginalTransactionID, CancelledAmount = cancel.CancelledAmount, TransDate = cancel.TransDate, TransTime = cancel.TransTime, Balance = cancel.Balance, RemainedAmount = cancel.RemainedAmount, ApprovalDateTime = cancel.ApprovalDateTime, CreatedAt = cancel.CreatedAt, UpdatedAt = cancel.UpdatedAt }; } }