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

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

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

/**
 * 회의록 도메인 모델
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Minutes {

    /**
     * 회의록 ID
     */
    private String minutesId;

    /**
     * 회의 ID
     */
    private String meetingId;

    /**
     * 회의록 제목
     */
    private String title;

    /**
     * 회의록 섹션 목록
     */
    private List<MinutesSection> sections;

    /**
     * 회의록 상태 (DRAFT, FINALIZED)
     */
    private String status;

    /**
     * 버전
     */
    private Integer version;

    /**
     * 작성자 ID
     */
    private String createdBy;

    /**
     * 생성 시간
     */
    private LocalDateTime createdAt;

    /**
     * 최종 수정 시간
     */
    private LocalDateTime lastModifiedAt;

    /**
     * 최종 수정자 ID
     */
    private String lastModifiedBy;

    /**
     * 확정자 ID
     */
    private String finalizedBy;

    /**
     * 확정 일시
     */
    private LocalDateTime finalizedAt;

    /**
     * 회의록 확정
     */
    public void finalize(String userId) {
        this.status = "FINALIZED";
        this.finalizedBy = userId;
        this.finalizedAt = LocalDateTime.now();
    }

    /**
     * 회의록 수정
     */
    public void update() {
        this.version++;
    }

    /**
     * 회의록 확정 여부 확인
     */
    public boolean isFinalized() {
        return "FINALIZED".equals(this.status);
    }

    /**
     * 버전 증가
     */
    public void incrementVersion() {
        this.version++;
    }

    /**
     * 회의록 제목 업데이트
     */
    public void updateTitle(String title) {
        this.title = title;
        this.version++;
    }
}
