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;
}