Handler.cs 831 B

123456789101112131415161718192021222324252627
  1. using Application.Abstractions.Messaging;
  2. using Application.Abstractions.Data;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Admin.Crypto.Curation.Save;
  5. public sealed class Handler(IAppDbContext db) : ICommandHandler<Command>
  6. {
  7. public async Task Handle(Command request, CancellationToken ct)
  8. {
  9. var coinIDs = request.Items.Select(x => x.CoinID).ToList();
  10. var coins = await db.Coin.Where(c => coinIDs.Contains(c.ID)).ToListAsync(ct);
  11. var coinMap = coins.ToDictionary(c => c.ID);
  12. foreach (var item in request.Items)
  13. {
  14. if (!coinMap.TryGetValue(item.CoinID, out var coin))
  15. {
  16. continue;
  17. }
  18. coin.SetCuration(item.IsFeatured, item.DisplayOrder);
  19. }
  20. await db.SaveChangesAsync(ct);
  21. }
  22. }