Handler.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Microsoft.EntityFrameworkCore;
  4. using SharedKernel.Results;
  5. namespace Application.Features.Admin.Store.Settlement.Get;
  6. public sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Result<Response>>
  7. {
  8. public async Task<Result<Response>> Handle(Query request, CancellationToken ct)
  9. {
  10. var row = await db.GameSettlement
  11. .AsNoTracking()
  12. .Include(s => s.Game)
  13. .Where(s => s.ID == request.ID)
  14. .Select(s => new
  15. {
  16. s.ID,
  17. s.GameID,
  18. GameName = s.Game!.KorName,
  19. GamePublisher = s.Game.Publisher,
  20. GameCommissionRate = s.Game.CommissionRate,
  21. s.Year,
  22. s.Month,
  23. s.TotalRevenueAmount,
  24. s.OrderCount,
  25. s.Status,
  26. s.CreatedAt,
  27. s.SettledAt,
  28. s.SettledByAdminUserId,
  29. s.SettledByAdminEmail,
  30. s.AdminMemo
  31. })
  32. .FirstOrDefaultAsync(ct);
  33. if (row is null)
  34. {
  35. return Result.Failure<Response>(Error.NotFound("GameSettlement.NotFound", "정산 정보를 찾을 수 없습니다."));
  36. }
  37. return Result.Success(new Response(
  38. row.ID,
  39. row.GameID,
  40. row.GameName,
  41. row.GamePublisher,
  42. row.GameCommissionRate,
  43. row.Year,
  44. row.Month,
  45. row.TotalRevenueAmount,
  46. row.OrderCount,
  47. row.Status,
  48. row.CreatedAt,
  49. row.SettledAt,
  50. row.SettledByAdminUserId,
  51. row.SettledByAdminEmail,
  52. row.AdminMemo
  53. ));
  54. }
  55. }