namespace ECPDAL.Meeting.DTOs;
///
/// ECP-facing shape for a Meeting Action Item — a thin surface over the existing shared TTASK
/// entity (CRMBLL.Task.ITaskBLL / CRMDAL.DTO.Task.TaskDTO), per the ECP preview's own framing:
/// "the same underlying task record used across GB5, not an ECP-only checklist." MeetingId maps
/// to TaskDTO.ObjectId with ObjectTypeId fixed to OBJECTMEETING; every CRM-only field (BizTransactionType,
/// PartyBranch, Asset, Machine, Allocation, WBS codes, ...) is defaulted by
/// MeetingActionItemBLL's translation layer and never exposed here.
///
public class MeetingActionItemDTO
{
public int TaskId { get; set; }
public int MeetingId { get; set; }
public string Title { get; set; } = string.Empty;
public int AssignedTo { get; set; }
public string? AssignedToName { get; set; }
public DateOnly DueDate { get; set; }
public int ParentTaskId { get; set; } = -1;
public byte WbsLevel { get; set; }
public byte Status { get; set; } // TaskStatus, passthrough from TTASK
}
/// Input for SaveMeetingActionItem — creates (TaskId == 0) or updates (TaskId > 0).
public class SaveMeetingActionItemDTO
{
public int TaskId { get; set; }
public int MeetingId { get; set; }
public string Title { get; set; } = string.Empty;
public int AssignedTo { get; set; }
public DateOnly DueDate { get; set; }
public int ParentTaskId { get; set; } = -1;
}
/// Input for RescheduleMeetingActionItem — the ECP preview's "Reschedule" action (new
/// due date + free-text reason). TTASK has no revision-history column, so Reason is logged via
/// EventLogPublish only and is not persisted on the task row itself.
public class RescheduleMeetingActionItemDTO
{
public int TaskId { get; set; }
public DateOnly NewDate { get; set; }
public string? Reason { get; set; }
}
/// Dropdown-picker row for GetSelectListMeetingActionItem — assignable users and
/// candidate parent tasks (for WBS nesting), scoped to one meeting.
public class MeetingActionItemPicklistDTO
{
public int TaskId { get; set; }
public string Title { get; set; } = string.Empty;
public byte WbsLevel { get; set; }
}