namespace ECPDAL.Meeting.DTOs; /// /// A single meeting row in TMEETING — minimal scheduling only (start/end, virtual link, /// location, type, optional polymorphic business-object link). Per the plan's explicit scope /// decision this module does not integrate a calendar engine, a video-conferencing provider, or a /// reminder engine. Meeting minutes/discussion flow through Communication's TCOMMENTTHREAD and /// meeting-generated action items are FBCK ActionItem rows — both reached only via the shared /// MENTITY-registry convention (Communication) / a reusable int PK (FBCK ActionItem.ContextId), /// never via a direct project/code reference to ECPDAL.Communication/BLL or FBCKDAL/BLL. /// public class MeetingDTO { public int MeetingId { get; set; } public string Title { get; set; } = string.Empty; public int MeetingTypeId { get; set; } = -1; // -> MGCM/MGCMTYPE public DateTime StartOn { get; set; } public DateTime EndOn { get; set; } public string? VirtualLink { get; set; } public string? Location { get; set; } public int OrganizerUserId { get; set; } public string? OrganizerUserCode { get; set; } public string? OrganizerUserName { get; set; } public byte Status { get; set; } = 1; // 1=scheduled 2=completed 3=cancelled public int ObjectTypeId { get; set; } = -1; // optional polymorphic business-object link public int ObjectId { get; set; } = -1; public int OuId { get; set; } = -1; public int TenantId { get; set; } = -1; public string DatabaseName { get; set; } = string.Empty; public byte DatabaseType { get; set; } public short Version { get; set; } public int CreatedById { get; set; } = -1; public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } = -1; public DateTime ModifiedOn { get; set; } /// Populated in-memory by MeetingBLL when assembling a detail view — never read /// from TMEETING directly. public List Participants { get; set; } = []; } /// Input shape for SaveMeeting — a smaller surface than the full read DTO. public class SaveMeetingDTO { public int MeetingId { get; set; } public string Title { get; set; } = string.Empty; public int MeetingTypeId { get; set; } = -1; public DateTime StartOn { get; set; } public DateTime EndOn { get; set; } public string? VirtualLink { get; set; } public string? Location { get; set; } public int ObjectTypeId { get; set; } = -1; public int ObjectId { get; set; } = -1; public int OuId { get; set; } = -1; } public class UpdateMeetingStatusDTO { public int MeetingId { get; set; } public byte NewStatus { get; set; } // 1=scheduled 2=completed 3=cancelled } /// A single participant row in TMEETINGPARTICIPANT. public class MeetingParticipantDTO { public int MeetingParticipantId { get; set; } public int MeetingId { get; set; } public int UserId { get; set; } public string? UserCode { get; set; } public string? UserName { get; set; } public byte AttendanceStatus { get; set; } = 1; // 1=invited 2=accepted 3=declined 4=attended 5=no-show public int TenantId { get; set; } = -1; public string DatabaseName { get; set; } = string.Empty; public byte DatabaseType { get; set; } public byte Status { get; set; } = 1; // 1=Active 2=Deleted public int CreatedById { get; set; } = -1; public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } = -1; public DateTime ModifiedOn { get; set; } } public class AddMeetingParticipantDTO { public int MeetingId { get; set; } public int UserId { get; set; } } public class UpdateParticipantAttendanceDTO { public int MeetingId { get; set; } public int UserId { get; set; } public byte AttendanceStatus { get; set; } } /// Dropdown-picker row for GetSelectListMeeting — the MGCM/GCMTYPEID "Meeting Type" /// classification (Planning/Review/Standup/Retrospective in the ECP preview). public class MeetingTypePicklistDTO { public int MeetingTypeId { get; set; } public string Code { get; set; } = string.Empty; public string Name { get; set; } = string.Empty; } /// Dropdown-picker row for GetSelectListMeetingDetails (the "invite participant" /// picker) — users NOT already a participant of the given meeting. public class MeetingParticipantPicklistDTO { public int UserId { get; set; } public string UserCode { get; set; } = string.Empty; public string UserName { get; set; } = string.Empty; }