using FlatRender.ContentSvc.Domain.Enums; namespace FlatRender.ContentSvc.Domain.Entities; public class ProjectContainer { public Guid Id { get; set; } = Guid.NewGuid(); public Guid? TenantId { get; set; } public string Slug { get; set; } = default!; public string Name { get; set; } = default!; public string? Description { get; set; } public string? Keywords { get; set; } public string? NewsText { get; set; } public string? Image { get; set; } public string? Demo { get; set; } public string? FullDemo { get; set; } public string? MiniDemo { get; set; } public string? DemoScriptTag { get; set; } public bool IsPublished { get; set; } public bool IsPremium { get; set; } public bool IsMockup { get; set; } public ChooseMode PrimaryMode { get; set; } = ChooseMode.FLEXIBLE; public decimal? RateAvg { get; set; } public int RateCount { get; set; } public long ViewCount { get; set; } public long UseCount { get; set; } public int Sort { get; set; } public DateTime SortDate { get; set; } = DateTime.UtcNow; public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; public DateTime? DeletedAt { get; set; } public ICollection Projects { get; set; } = []; public ICollection ContainerCategories { get; set; } = []; public ICollection ContainerTags { get; set; } = []; public ICollection Comments { get; set; } = []; } public class ContainerCategory { public Guid ContainerId { get; set; } public ProjectContainer Container { get; set; } = default!; public Guid CategoryId { get; set; } public Category Category { get; set; } = default!; public int Sort { get; set; } } public class ContainerTag { public Guid ContainerId { get; set; } public ProjectContainer Container { get; set; } = default!; public Guid TagId { get; set; } public Tag Tag { get; set; } = default!; } public class Project { public Guid Id { get; set; } = Guid.NewGuid(); public Guid ContainerId { get; set; } public ProjectContainer Container { get; set; } = default!; public Guid? ProjectServerId { get; set; } public string Name { get; set; } = default!; public string? Description { get; set; } public string? Image { get; set; } public string? FullDemo { get; set; } public string? DemoScriptTag { get; set; } public string? DownloadLink { get; set; } public string? AepMinioBucket { get; set; } public string? AepMinioKey { get; set; } public string? AepFileUrl { get; set; } public string? AepFileMd5 { get; set; } public long? AepFileSizeBytes { get; set; } public DateTime? AepUploadedAt { get; set; } public string? Folder { get; set; } public int OriginalWidth { get; set; } public int OriginalHeight { get; set; } public string? Aspect { get; set; } public decimal ProjectDurationSec { get; set; } public decimal? MinDurationSec { get; set; } public decimal? MaxDurationSec { get; set; } public int FreeFps { get; set; } = 30; public ChooseMode ChooseMode { get; set; } public ResolutionKind Resolution { get; set; } = ResolutionKind.FullHD; public decimal VipFactor { get; set; } = 1.0m; public string RenderAepComp { get; set; } = "flatrender"; /// Render engine for this template: "AfterEffects" (default) or "Remotion". public string RenderEngine { get; set; } = "AfterEffects"; /// For Remotion templates, the composition id to render (e.g. "KineticQuote"). public string? RenderRemotionComp { get; set; } public string? SharedLayerImage { get; set; } public string? SharedColorsSvg { get; set; } public string? SharedColorPresetsSvg { get; set; } public bool IsPublished { get; set; } public int Sort { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; public DateTime? DeletedAt { get; set; } public ICollection Scenes { get; set; } = []; public ICollection SharedColors { get; set; } = []; public ICollection SharedColorPresets { get; set; } = []; public ICollection SharedLayers { get; set; } = []; public ICollection CharacterControllers { get; set; } = []; public ICollection CharacterPresets { get; set; } = []; public ICollection PresetStories { get; set; } = []; }