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

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

import java.time.LocalDateTime;

/**
 * 회의 세션 도메인 모델
 * 회의가 시작되면 생성되고 회의 종료 시 종료됨
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Session {

    /**
     * 세션 ID (UUID)
     */
    private String sessionId;

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

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

    /**
     * 세션 시작자 (사용자 ID)
     */
    private String startedBy;

    /**
     * 세션 시작 시간
     */
    private LocalDateTime startedAt;

    /**
     * 세션 종료 시간
     */
    private LocalDateTime endedAt;

    /**
     * 세션 상태 (ACTIVE, CLOSED)
     */
    @Builder.Default
    private String status = "ACTIVE";

    /**
     * 세션 종료
     */
    public void close() {
        this.status = "CLOSED";
        this.endedAt = LocalDateTime.now();
    }

    /**
     * 세션이 활성 상태인지 확인
     */
    public boolean isActive() {
        return "ACTIVE".equals(this.status);
    }
}
