| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System.ComponentModel.DataAnnotations;
- using System.ComponentModel.DataAnnotations.Schema;
- using Domain.Entities.Members;
- namespace Domain.Entities.Donations;
- /// <summary>
- /// 후원자가 채널별로 선택한 대표 칭호 (채널당 1개).
- /// </summary>
- public sealed class DonorTitleSelection
- {
- [ForeignKey(nameof(DonorMemberID))]
- public Member Donor { get; private set; } = null!;
- [ForeignKey(nameof(ChannelID))]
- public Channel Channel { get; private set; } = null!;
- [ForeignKey(nameof(SelectedTitleID))]
- public ChannelTitle? SelectedTitle { get; private set; }
- [Key]
- public int ID { get; private set; }
- public int DonorMemberID { get; private set; }
- public int ChannelID { get; private set; }
- public int? SelectedTitleID { get; private set; }
- public DateTime? UpdatedAt { get; private set; }
- public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
- private DonorTitleSelection() { }
- private DonorTitleSelection(int donorMemberID, int channelID, int? selectedTitleID)
- {
- if (donorMemberID <= 0)
- {
- throw new ArgumentOutOfRangeException(nameof(donorMemberID));
- }
- if (channelID <= 0)
- {
- throw new ArgumentOutOfRangeException(nameof(channelID));
- }
- DonorMemberID = donorMemberID;
- ChannelID = channelID;
- SelectedTitleID = selectedTitleID;
- }
- public static DonorTitleSelection Create(int donorMemberID, int channelID, int? selectedTitleID)
- {
- return new(donorMemberID, channelID, selectedTitleID);
- }
- public void Update(int? selectedTitleID)
- {
- SelectedTitleID = selectedTitleID;
- UpdatedAt = DateTime.UtcNow;
- }
- }
|