Handler.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Domain.Entities.Donations;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Features.Api.DonationAlert.SaveConfig;
  6. internal sealed class Handler(IAppDbContext db) : ICommandHandler<Command>
  7. {
  8. public async Task Handle(Command r, CancellationToken ct)
  9. {
  10. if (r.ID.HasValue)
  11. {
  12. var config = await db.DonationAlertConfig.FirstOrDefaultAsync(c => c.ID == r.ID.Value && c.ChannelID == r.ChannelID, ct);
  13. if (config is null)
  14. {
  15. throw new KeyNotFoundException("설정을 찾을 수 없습니다.");
  16. }
  17. config.Update(
  18. r.Title, r.Amount, r.MatchType, r.Message,
  19. r.PlayDelaySec, r.DisplayDurationSec,
  20. r.PopupEffect, r.TextEffect,
  21. r.NicknameFontFamily, r.NicknameFontSize, r.NicknameFontColor,
  22. r.AmountFontFamily, r.AmountFontSize, r.AmountFontColor,
  23. r.MessageFontFamily, r.MessageFontSize, r.MessageFontColor,
  24. r.TemplateFontFamily, r.TemplateFontSize, r.TemplateFontColor,
  25. r.EnableImage, r.ImageUrl,
  26. r.EnableSound, r.SoundUrl,
  27. r.IsActive
  28. );
  29. }
  30. else
  31. {
  32. var config = DonationAlertConfig.Create(
  33. r.ChannelID, r.MemberID, r.Title, r.Amount, r.MatchType, r.Message,
  34. r.PlayDelaySec, r.DisplayDurationSec,
  35. popupEffect: r.PopupEffect,
  36. textEffect: r.TextEffect,
  37. nicknameFontFamily: r.NicknameFontFamily,
  38. nicknameFontSize: r.NicknameFontSize,
  39. nicknameFontColor: r.NicknameFontColor,
  40. amountFontFamily: r.AmountFontFamily,
  41. amountFontSize: r.AmountFontSize,
  42. amountFontColor: r.AmountFontColor,
  43. messageFontFamily: r.MessageFontFamily,
  44. messageFontSize: r.MessageFontSize,
  45. messageFontColor: r.MessageFontColor,
  46. templateFontFamily: r.TemplateFontFamily,
  47. templateFontSize: r.TemplateFontSize,
  48. templateFontColor: r.TemplateFontColor,
  49. enableImage: r.EnableImage,
  50. imageUrl: r.ImageUrl,
  51. enableSound: r.EnableSound,
  52. soundUrl: r.SoundUrl
  53. );
  54. db.DonationAlertConfig.Add(config);
  55. }
  56. await db.SaveChangesAsync(ct);
  57. }
  58. }