Handler.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using SharedKernel.Results;
  2. using Application.Abstractions.Data;
  3. using MediatR;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Features.Api.Auth.GetProfile;
  6. internal sealed class Handler(IAppDbContext db) : IRequestHandler<Query, Result<Response>>
  7. {
  8. public async Task<Result<Response>> Handle(Query request, CancellationToken ct)
  9. {
  10. var member = await db.Member
  11. .AsNoTracking()
  12. .Include(m => m.MemberGrade)
  13. .Include(m => m.MemberApprove)
  14. .Include(m => m.MemberStats)
  15. .Where(m => m.ID == request.MemberID)
  16. .Select(m => new Response(
  17. m.ID,
  18. m.SID,
  19. m.Email,
  20. m.Name,
  21. m.Intro,
  22. m.Summary,
  23. m.Thumb,
  24. m.Icon,
  25. m.Gender != null ? (int?)m.Gender : null,
  26. m.IsEmailVerified,
  27. m.IsAuthCertified,
  28. m.IsAdmin,
  29. m.IsCreator,
  30. m.IsDenied,
  31. m.LastLoginAt,
  32. m.PasswordUpdatedAt,
  33. m.CreatedAt,
  34. m.UpdatedAt,
  35. m.MemberGrade != null ? new GradeDto(
  36. m.MemberGrade.ID,
  37. m.MemberGrade.KorName,
  38. m.MemberGrade.EngName,
  39. m.MemberGrade.Order,
  40. m.MemberGrade.Image
  41. ) : null,
  42. m.MemberApprove != null ? new ApproveDto(
  43. m.MemberApprove.IsReceiveSMS,
  44. m.MemberApprove.IsReceiveEmail,
  45. m.MemberApprove.IsReceiveNote,
  46. m.MemberApprove.IsDisclosureInvest
  47. ) : new ApproveDto(false, false, false, false),
  48. m.MemberStats != null ? new StatsDto(
  49. m.MemberStats.Exp,
  50. m.MemberStats.PostCount,
  51. m.MemberStats.CommentCount,
  52. m.MemberStats.LikeReceivedCount,
  53. m.MemberStats.LikeGivenCount,
  54. m.MemberStats.BookmarkGivenCount,
  55. m.MemberStats.LoginCount,
  56. m.MemberStats.AttendanceCount,
  57. m.MemberStats.FollowingCount,
  58. m.MemberStats.FollowerCount
  59. ) : new StatsDto(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)))
  60. .FirstOrDefaultAsync(ct);
  61. if (member is null)
  62. {
  63. return Result.Failure<Response>(Error.NotFound("Auth.MemberNotFound", "회원 정보를 찾을 수 없습니다."));
  64. }
  65. return Result.Success(member);
  66. }
  67. }