| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- using System.ComponentModel.DataAnnotations;
- using System.ComponentModel.DataAnnotations.Schema;
- using Domain.Entities.Donations.ValueObject;
- using Domain.Entities.Members;
- namespace Domain.Entities.Donations;
- public class DonationAlertConfig
- {
- [ForeignKey(nameof(ChannelID))]
- public virtual Channel? Channel { get; private set; }
- [ForeignKey(nameof(MemberID))]
- public virtual Member? Member { get; private set; }
- [Key]
- public int ID { get; private set; }
- public int ChannelID { get; private set; }
- public int MemberID { get; private set; }
- public string Title { get; private set; } = default!;
- public int Amount { get; private set; }
- /// <summary>0 = MinThreshold (이상), 1 = Exact (시그니처)</summary>
- public int MatchType { get; private set; }
- public string Message { get; private set; } = default!;
- public double PlayDelaySec { get; private set; } = DonationConstants.Alert.DefaultPlayDelaySec;
- public double DisplayDurationSec { get; private set; } = DonationConstants.Alert.DefaultDisplayDurationSec;
- // ── 효과 ─────────────────────────────────────────
- public string? PopupEffect { get; private set; }
- public string? TextEffect { get; private set; }
- // ── 폰트 (닉네임) ────────────────────────────────
- public string? NicknameFontFamily { get; private set; }
- public int NicknameFontSize { get; private set; } = DonationConstants.Alert.DefaultNicknameFontSize;
- public string NicknameFontColor { get; private set; } = DonationConstants.Alert.DefaultNicknameFontColor;
- // ── 폰트 (금액) ──────────────────────────────────
- public string? AmountFontFamily { get; private set; }
- public int AmountFontSize { get; private set; } = DonationConstants.Alert.DefaultAmountFontSize;
- public string AmountFontColor { get; private set; } = DonationConstants.Alert.DefaultAmountFontColor;
- // ── 폰트 (메시지) ────────────────────────────────
- public string? MessageFontFamily { get; private set; }
- public int MessageFontSize { get; private set; } = DonationConstants.Alert.DefaultMessageFontSize;
- public string MessageFontColor { get; private set; } = DonationConstants.Alert.DefaultMessageFontColor;
- // ── 폰트 (템플릿 기본 문구) ────────────────────
- public string? TemplateFontFamily { get; private set; }
- public int TemplateFontSize { get; private set; } = DonationConstants.Alert.DefaultTemplateFontSize;
- public string TemplateFontColor { get; private set; } = DonationConstants.Alert.DefaultTemplateFontColor;
- // ── 미디어 ───────────────────────────────────────
- public bool EnableImage { get; private set; }
- public string? ImageUrl { get; private set; }
- public bool EnableSound { get; private set; }
- public string? SoundUrl { get; private set; }
- // ── 상태 ─────────────────────────────────────────
- public bool IsActive { get; private set; }
- public DateTime? UpdatedAt { get; private set; }
- public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
- private DonationAlertConfig() { }
- public static DonationAlertConfig Create(
- int channelID,
- int memberID,
- string title,
- int amount,
- int matchType,
- string message,
- double playDelaySec = DonationConstants.Alert.DefaultPlayDelaySec,
- double displayDurationSec = DonationConstants.Alert.DefaultDisplayDurationSec,
- string? popupEffect = null,
- string? textEffect = null,
- string? nicknameFontFamily = null,
- int nicknameFontSize = DonationConstants.Alert.DefaultNicknameFontSize,
- string nicknameFontColor = DonationConstants.Alert.DefaultNicknameFontColor,
- string? amountFontFamily = null,
- int amountFontSize = DonationConstants.Alert.DefaultAmountFontSize,
- string amountFontColor = DonationConstants.Alert.DefaultAmountFontColor,
- string? messageFontFamily = null,
- int messageFontSize = DonationConstants.Alert.DefaultMessageFontSize,
- string messageFontColor = DonationConstants.Alert.DefaultMessageFontColor,
- string? templateFontFamily = null,
- int templateFontSize = DonationConstants.Alert.DefaultTemplateFontSize,
- string templateFontColor = DonationConstants.Alert.DefaultTemplateFontColor,
- bool enableImage = false,
- string? imageUrl = null,
- bool enableSound = false,
- string? soundUrl = null
- ) {
- return new DonationAlertConfig
- {
- ChannelID = channelID,
- MemberID = memberID,
- Title = title,
- Amount = amount,
- MatchType = matchType,
- Message = message,
- PlayDelaySec = playDelaySec,
- DisplayDurationSec = displayDurationSec,
- PopupEffect = popupEffect,
- TextEffect = textEffect,
- NicknameFontFamily = nicknameFontFamily,
- NicknameFontSize = nicknameFontSize,
- NicknameFontColor = nicknameFontColor,
- AmountFontFamily = amountFontFamily,
- AmountFontSize = amountFontSize,
- AmountFontColor = amountFontColor,
- MessageFontFamily = messageFontFamily,
- MessageFontSize = messageFontSize,
- MessageFontColor = messageFontColor,
- TemplateFontFamily = templateFontFamily,
- TemplateFontSize = templateFontSize,
- TemplateFontColor = templateFontColor,
- EnableImage = enableImage,
- ImageUrl = imageUrl,
- EnableSound = enableSound,
- SoundUrl = soundUrl
- };
- }
- public void Update(
- string title,
- int amount,
- int matchType,
- string message,
- double playDelaySec,
- double displayDurationSec,
- string? popupEffect,
- string? textEffect,
- string? nicknameFontFamily,
- int nicknameFontSize,
- string nicknameFontColor,
- string? amountFontFamily,
- int amountFontSize,
- string amountFontColor,
- string? messageFontFamily,
- int messageFontSize,
- string messageFontColor,
- string? templateFontFamily,
- int templateFontSize,
- string templateFontColor,
- bool enableImage,
- string? imageUrl,
- bool enableSound,
- string? soundUrl,
- bool isActive
- ) {
- Title = title;
- Amount = amount;
- MatchType = matchType;
- Message = message;
- PlayDelaySec = playDelaySec;
- DisplayDurationSec = displayDurationSec;
- PopupEffect = popupEffect;
- TextEffect = textEffect;
- NicknameFontFamily = nicknameFontFamily;
- NicknameFontSize = nicknameFontSize;
- NicknameFontColor = nicknameFontColor;
- AmountFontFamily = amountFontFamily;
- AmountFontSize = amountFontSize;
- AmountFontColor = amountFontColor;
- MessageFontFamily = messageFontFamily;
- MessageFontSize = messageFontSize;
- MessageFontColor = messageFontColor;
- TemplateFontFamily = templateFontFamily;
- TemplateFontSize = templateFontSize;
- TemplateFontColor = templateFontColor;
- EnableImage = enableImage;
- ImageUrl = imageUrl;
- EnableSound = enableSound;
- SoundUrl = soundUrl;
- IsActive = isActive;
- UpdatedAt = DateTime.UtcNow;
- }
- }
|