using CollabDAL.DTO.CollabParticipant; namespace CollabDAL.DTO.CollabSession; /// Full session with participant list — used for detail view and join response. public class CollabSessionDTO { public Guid SessionId { get; set; } public string SessionCode { get; set; } = string.Empty; public string Title { get; set; } = string.Empty; public string SessionType { get; set; } = string.Empty; public string Status { get; set; } = string.Empty; public string Mode { get; set; } = string.Empty; public string? ContextModuleCode { get; set; } public string? ContextRecordId { get; set; } public string? ContextRecordLabel { get; set; } public string? ContextRouteUrl { get; set; } public DateTime? ScheduledAt { get; set; } public int? ScheduledDurationMinutes { get; set; } public DateTime? StartedAt { get; set; } public DateTime? EndedAt { get; set; } public int MaxParticipants { get; set; } public string CreatedBy { get; set; } = string.Empty; public DateTime CreatedDate { get; set; } public string DatabaseName { get; set; } = string.Empty; public List Participants { get; set; } = []; } /// Lightweight session — used in list/grid views. No participant collection. public class CollabSessionSummaryDTO { public Guid SessionId { get; set; } public string SessionCode { get; set; } = string.Empty; public string Title { get; set; } = string.Empty; public string Status { get; set; } = string.Empty; public string Mode { get; set; } = string.Empty; public string? ContextModuleCode { get; set; } public string? ContextRecordLabel { get; set; } public DateTime? ScheduledAt { get; set; } public DateTime? StartedAt { get; set; } public int ActiveParticipantCount { get; set; } public string DatabaseName { get; set; } = string.Empty; }