package com.unicorn.hgzero.meeting.infra.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 회의록 상세 조회 응답 DTO
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MinutesDetailResponse {

    private String minutesId;
    private String title;
    private String memo;
    private String status; // DRAFT, FINALIZED
    private int version;
    private LocalDateTime createdAt;
    private LocalDateTime lastModifiedAt;
    private String createdBy;
    private String lastModifiedBy;
    
    // 회의 정보
    private MeetingInfo meeting;
    
    // 섹션 목록
    private List<SectionInfo> sections;
    
    // Todo 목록
    private List<TodoInfo> todos;

    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class MeetingInfo {
        private String meetingId;
        private String title;
        private LocalDateTime scheduledAt;
        private LocalDateTime startedAt;
        private LocalDateTime endedAt;
        private String organizerId;
        private String organizerName;
    }

    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class SectionInfo {
        private String sectionId;
        private String title;
        private String content;
        private int orderIndex;
        private boolean isLocked;
        private boolean isVerified;
        private String lockedBy;
        private LocalDateTime lockedAt;
        private String verifiedBy;
        private LocalDateTime verifiedAt;
    }

    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class TodoInfo {
        private String todoId;
        private String title;
        private String description;
        private String assigneeId;
        private String assigneeName;
        private String priority;
        private String status;
        private LocalDateTime dueDate;
        private LocalDateTime completedAt;
        private String completedBy;
    }
}