using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SumaTube.Domain.Entities.Videos { public class VideoSummary { public string Id { get; private set; } public string VideoId { get; private set; } public string Title { get; private set; } public string ThumbnailUrl { get; private set; } public string Status { get; private set; } public DateTime RequestDate { get; private set; } public string Language { get; private set; } public string UserId { get; private set; } public string Summary { get; private set; } public string Transcription { get; private set; } public int Duration { get; private set; } public string ErrorMessage { get; private set; } public string SessionId { get; private set; } // Factory method public static VideoSummary Create(string videoId, string userId, string language, string sessionId) { return new VideoSummary { Id = Guid.NewGuid().ToString(), VideoId = videoId, Title = "Carregando...", ThumbnailUrl = $"https://img.youtube.com/vi/{videoId}/maxresdefault.jpg", Status = "PROCESSANDO", RequestDate = DateTime.UtcNow, Language = language, UserId = userId, SessionId = sessionId }; } // Methods to update state public void SetAsCompleted(string title, string summary, string transcription, int duration) { Title = title; Summary = summary; Transcription = transcription; Duration = duration; Status = "REALIZADO"; ErrorMessage = null; } public void SetAsFailed(string errorMessage) { Status = "ERRO"; ErrorMessage = errorMessage; } // For MongoDB/ORM private VideoSummary() { } } }