CrewMember.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System.ComponentModel.DataAnnotations;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3. using Domain.Entities.Members;
  4. namespace Domain.Entities.Donations;
  5. public class CrewMember
  6. {
  7. [ForeignKey(nameof(CrewID))]
  8. public virtual Crew? Crew { get; private set; }
  9. [ForeignKey(nameof(MemberID))]
  10. public virtual Member? Member { get; private set; }
  11. [ForeignKey(nameof(ChannelID))]
  12. public virtual Channel? Channel { get; private set; }
  13. [Key]
  14. public int ID { get; private set; }
  15. public int CrewID { get; private set; }
  16. public int MemberID { get; private set; }
  17. public int? ChannelID { get; private set; }
  18. public string Nickname { get; private set; } = default!;
  19. public string? Role { get; private set; }
  20. public int SortOrder { get; private set; }
  21. public bool IsActive { get; private set; } = true;
  22. public DateTime JoinedAt { get; private set; } = DateTime.UtcNow;
  23. private CrewMember() { }
  24. public static CrewMember Create(int crewID, int memberID, string nickname, int? channelID = null, string? role = null, int sortOrder = 0)
  25. {
  26. return new CrewMember
  27. {
  28. CrewID = crewID,
  29. MemberID = memberID,
  30. ChannelID = channelID,
  31. Nickname = nickname,
  32. Role = role,
  33. SortOrder = sortOrder
  34. };
  35. }
  36. public void Update(string nickname, string? role, int sortOrder, bool isActive)
  37. {
  38. Nickname = nickname;
  39. Role = role;
  40. SortOrder = sortOrder;
  41. IsActive = isActive;
  42. }
  43. }