using Application.Abstractions.Data; using Application.Abstractions.Messaging; using Microsoft.EntityFrameworkCore; using SharedKernel.Results; namespace Application.Features.Admin.Store.Settlement.Get; public sealed class Handler(IAppDbContext db) : IQueryHandler> { public async Task> Handle(Query request, CancellationToken ct) { var row = await db.GameSettlement .AsNoTracking() .Include(s => s.Game) .Where(s => s.ID == request.ID) .Select(s => new { s.ID, s.GameID, GameName = s.Game!.KorName, GamePublisher = s.Game.Publisher, GameCommissionRate = s.Game.CommissionRate, s.Year, s.Month, s.TotalRevenueAmount, s.OrderCount, s.Status, s.CreatedAt, s.SettledAt, s.SettledByAdminUserId, s.SettledByAdminEmail, s.AdminMemo }) .FirstOrDefaultAsync(ct); if (row is null) { return Result.Failure(Error.NotFound("GameSettlement.NotFound", "정산 정보를 찾을 수 없습니다.")); } return Result.Success(new Response( row.ID, row.GameID, row.GameName, row.GamePublisher, row.GameCommissionRate, row.Year, row.Month, row.TotalRevenueAmount, row.OrderCount, row.Status, row.CreatedAt, row.SettledAt, row.SettledByAdminUserId, row.SettledByAdminEmail, row.AdminMemo )); } }