using System.ComponentModel.DataAnnotations;
using Domain.Entities.Members.ValueObject;
using Domain.Entities.Store.ValueObject;
namespace Domain.Entities.Members.Logs;
///
/// 소모품 아이템 사용/회수 감사 로그.
///
public class MemberItemUsageLog
{
[Key]
public int ID { get; private set; }
public int MemberID { get; private set; }
/// 대상 MemberItem ID (스냅샷).
public int MemberItemID { get; private set; }
public int ProductID { get; private set; }
public ItemKind Kind { get; private set; }
public MemberItemUsageAction Action { get; private set; }
/// 사용 결과 요약 (예: "밴 2건 해제", "글 34건 초기화").
public string? Detail { get; private set; }
public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
private MemberItemUsageLog() { }
public static MemberItemUsageLog Create(int memberID, int memberItemID, int productID, ItemKind kind, MemberItemUsageAction action, string? detail = null)
{
if (detail is not null && detail.Length > 300)
{
detail = detail[..300];
}
return new MemberItemUsageLog
{
MemberID = memberID,
MemberItemID = memberItemID,
ProductID = productID,
Kind = kind,
Action = action,
Detail = detail
};
}
}