MemberItemUsageLog.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.ComponentModel.DataAnnotations;
  2. using Domain.Entities.Members.ValueObject;
  3. using Domain.Entities.Store.ValueObject;
  4. namespace Domain.Entities.Members.Logs;
  5. /// <summary>
  6. /// 소모품 아이템 사용/회수 감사 로그.
  7. /// </summary>
  8. public class MemberItemUsageLog
  9. {
  10. [Key]
  11. public int ID { get; private set; }
  12. public int MemberID { get; private set; }
  13. /// <summary>대상 MemberItem ID (스냅샷).</summary>
  14. public int MemberItemID { get; private set; }
  15. public int ProductID { get; private set; }
  16. public ItemKind Kind { get; private set; }
  17. public MemberItemUsageAction Action { get; private set; }
  18. /// <summary>사용 결과 요약 (예: "밴 2건 해제", "글 34건 초기화").</summary>
  19. public string? Detail { get; private set; }
  20. public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
  21. private MemberItemUsageLog() { }
  22. public static MemberItemUsageLog Create(int memberID, int memberItemID, int productID, ItemKind kind, MemberItemUsageAction action, string? detail = null)
  23. {
  24. if (detail is not null && detail.Length > 300)
  25. {
  26. detail = detail[..300];
  27. }
  28. return new MemberItemUsageLog
  29. {
  30. MemberID = memberID,
  31. MemberItemID = memberItemID,
  32. ProductID = productID,
  33. Kind = kind,
  34. Action = action,
  35. Detail = detail
  36. };
  37. }
  38. }