Handler.cs 2.6 KB

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