package com.unicorn.hgzero.meeting.biz.domain;

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

import java.util.List;

/**
 * 대시보드 도메인 모델
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Dashboard {

    /**
     * 사용자 ID
     */
    private String userId;

    /**
     * 조회 기간
     */
    private String period;

    /**
     * 다가오는 회의 목록
     */
    private List<Meeting> upcomingMeetings;

    /**
     * 최근 회의록 목록
     */
    private List<Minutes> recentMinutes;

    /**
     * 할당된 Todo 목록
     */
    private List<Todo> assignedTodos;

    /**
     * 통계 정보
     */
    private Statistics statistics;

    /**
     * 통계 정보 내부 클래스
     */
    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Statistics {
        /**
         * 전체 회의 수
         */
        private Integer totalMeetings;

        /**
         * 예정된 회의 수
         */
        private Integer scheduledMeetings;

        /**
         * 진행 중인 회의 수
         */
        private Integer inProgressMeetings;

        /**
         * 완료된 회의 수
         */
        private Integer completedMeetings;

        /**
         * 전체 회의록 수
         */
        private Integer totalMinutes;

        /**
         * 초안 상태 회의록 수
         */
        private Integer draftMinutes;

        /**
         * 확정된 회의록 수
         */
        private Integer finalizedMinutes;

        /**
         * 전체 Todo 수
         */
        private Integer totalTodos;

        /**
         * 대기 중인 Todo 수
         */
        private Integer pendingTodos;

        /**
         * 완료된 Todo 수
         */
        private Integer completedTodos;

        /**
         * 지연된 Todo 수
         */
        private Integer overdueTodos;
    }
}
