CommandHandler.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Application.Abstractions.Messaging;
  2. using Application.Abstractions.Data;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Admin.Member.List.Approve;
  5. public sealed class CommandHandler(IAppDbContext db) : ICommandHandler<Command>
  6. {
  7. public async Task Handle(Command request, CancellationToken ct)
  8. {
  9. var member = await db.Member.Include(x => x.MemberApprove).FirstOrDefaultAsync(x => x.ID == request.MemberID, ct);
  10. if (member is null)
  11. {
  12. throw new KeyNotFoundException("회원을 찾을 수 없습니다.");
  13. }
  14. var approve = member.MemberApprove;
  15. var now = DateTime.UtcNow;
  16. // SMS 수신
  17. if (request.IsReceiveSMS != approve.IsReceiveSMS)
  18. {
  19. approve.IsReceiveSMS = request.IsReceiveSMS;
  20. approve.ReceiveSMSConsentAt = request.IsReceiveSMS ? now : null;
  21. }
  22. // 이메일 수신
  23. if (request.IsReceiveEmail != approve.IsReceiveEmail)
  24. {
  25. approve.IsReceiveEmail = request.IsReceiveEmail;
  26. approve.ReceiveEmailConsentAt = request.IsReceiveEmail ? now : null;
  27. }
  28. // 쪽지 수신
  29. if (request.IsReceiveNote != approve.IsReceiveNote)
  30. {
  31. approve.IsReceiveNote = request.IsReceiveNote;
  32. approve.ReceiveNoteConsentAt = request.IsReceiveNote ? now : null;
  33. }
  34. // 투자 현황 공개
  35. if (request.IsDisclosureInvest != approve.IsDisclosureInvest)
  36. {
  37. approve.IsDisclosureInvest = request.IsDisclosureInvest;
  38. approve.DisclosureInvestConsentAt = request.IsDisclosureInvest ? now : null;
  39. }
  40. await db.SaveChangesAsync(ct);
  41. }
  42. }