using Application.Abstractions.Data; using Application.Abstractions.Messaging; using SharedKernel.Results; using Microsoft.EntityFrameworkCore; namespace Application.Features.Api.MyPage.UpdatePrivacySettings; internal sealed class Handler(IAppDbContext db) : ICommandHandler { public async Task Handle(Command request, CancellationToken ct) { var approve = await db.MemberApprove.FirstOrDefaultAsync(a => a.MemberID == request.MemberID, ct); if (approve is null) { return Result.Failure(Error.NotFound("MyPage.MemberNotFound", "회원 정보를 찾을 수 없습니다.")); } var now = DateTime.UtcNow; if (approve.IsRankingPublic != request.IsRankingPublic) { approve.IsRankingPublic = request.IsRankingPublic; approve.RankingPublicConsentAt = now; } if (approve.IsDonationPublic != request.IsDonationPublic) { approve.IsDonationPublic = request.IsDonationPublic; approve.DonationPublicConsentAt = now; } await db.SaveChangesAsync(ct); return Result.Success(); } }