Handler.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. using Application.Abstractions.Crypto;
  2. using Application.Abstractions.Data;
  3. using Application.Abstractions.Messaging;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Features.Api.MyPage.Address.List;
  6. public sealed class Handler(IAppDbContext db, IFieldEncryptor encryptor) : IQueryHandler<Query, Response>
  7. {
  8. public async Task<Response> Handle(Query request, CancellationToken ct)
  9. {
  10. var addresses = await db.MemberAddress
  11. .AsNoTracking()
  12. .Where(a => a.MemberID == request.MemberID)
  13. .OrderByDescending(a => a.IsDefault)
  14. .ThenByDescending(a => a.ID)
  15. .ToListAsync(ct);
  16. var list = addresses.Select(a => new Response.Row(
  17. ID: a.ID,
  18. IsDefault: a.IsDefault,
  19. RecipientName: encryptor.Decrypt(a.RecipientName_Encrypted, a.KeyVersion),
  20. Phone: encryptor.Decrypt(a.Phone_Encrypted, a.KeyVersion),
  21. ZipCode: a.ZipCode,
  22. Address1: encryptor.Decrypt(a.Address1_Encrypted, a.KeyVersion),
  23. Address2: encryptor.Decrypt(a.Address2_Encrypted, a.KeyVersion),
  24. CreatedAt: a.CreatedAt,
  25. UpdatedAt: a.UpdatedAt
  26. )).ToList();
  27. return new Response(list);
  28. }
  29. }