Handler.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Api.DonationAlert.GetConfig;
  5. internal sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Response>
  6. {
  7. public async Task<Response> Handle(Query request, CancellationToken ct)
  8. {
  9. var widgetToken = await db.Channel
  10. .AsNoTracking()
  11. .Where(c => c.ID == request.ChannelID && c.IsActive)
  12. .Select(c => c.WidgetToken)
  13. .FirstOrDefaultAsync(ct);
  14. var list = await db.DonationAlertConfig
  15. .AsNoTracking()
  16. .Where(c => c.ChannelID == request.ChannelID)
  17. .OrderBy(c => c.Amount)
  18. .Select(c => new AlertConfigItem(
  19. c.ID, c.Title, c.Amount, c.MatchType, c.Message,
  20. c.PlayDelaySec, c.DisplayDurationSec,
  21. c.PopupEffect, c.TextEffect,
  22. c.NicknameFontFamily, c.NicknameFontSize, c.NicknameFontColor,
  23. c.AmountFontFamily, c.AmountFontSize, c.AmountFontColor,
  24. c.MessageFontFamily, c.MessageFontSize, c.MessageFontColor,
  25. c.TemplateFontFamily, c.TemplateFontSize, c.TemplateFontColor,
  26. c.EnableImage, c.ImageUrl,
  27. c.EnableSound, c.SoundUrl,
  28. c.IsActive
  29. ))
  30. .ToListAsync(ct);
  31. return new Response(list, widgetToken);
  32. }
  33. }