package com.unicorn.hgzero.notification.event.event;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * 회의 생성 이벤트 DTO
 *
 * Meeting 서비스에서 회의 생성 시 발행되는 이벤트
 * 회의 초대 알림 발송에 사용
 *
 * @author 준호 (Backend Developer)
 * @version 1.0
 * @since 2025-10-23
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MeetingCreatedEvent {

    /**
     * 이벤트 고유 ID (중복 발송 방지용)
     */
    private String eventId;

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

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

    /**
     * 회의 설명
     */
    private String description;

    /**
     * 회의 시작 일시
     */
    private LocalDateTime startTime;

    /**
     * 회의 종료 일시
     */
    private LocalDateTime endTime;

    /**
     * 회의 장소
     */
    private String location;

    /**
     * 회의 주최자 정보
     */
    private ParticipantInfo organizer;

    /**
     * 참석자 목록
     */
    private List<ParticipantInfo> participants;

    /**
     * 이벤트 발행 일시
     */
    private LocalDateTime createdAt;

    /**
     * 참석자 정보 DTO
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class ParticipantInfo {
        /**
         * 사용자 ID
         */
        private String userId;

        /**
         * 사용자 이름
         */
        private String name;

        /**
         * 사용자 이메일
         */
        private String email;
    }
}
