Handler.cs 919 B

1234567891011121314151617181920212223242526272829303132
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Domain.Entities.Donations;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Features.Api.DonationRemote.UpdateState;
  6. internal sealed class Handler(IAppDbContext db) : ICommandHandler<Command>
  7. {
  8. public async Task Handle(Command r, CancellationToken ct)
  9. {
  10. var meta = await db.DonationMeta.FirstOrDefaultAsync(m => m.ChannelID == r.ChannelID, ct);
  11. if (meta is null)
  12. {
  13. meta = DonationMeta.Create(r.ChannelID, r.MemberID);
  14. await db.DonationMeta.AddAsync(meta, ct);
  15. await db.SaveChangesAsync(ct);
  16. }
  17. meta.UpdateRemoteState(r.IsPaused, r.IsAudioOnly, r.IsVideoOnly);
  18. if (r.IsAccepting) {
  19. meta.StartAccepting();
  20. } else {
  21. meta.StopAccepting();
  22. }
  23. await db.SaveChangesAsync(ct);
  24. }
  25. }