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

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

import java.time.LocalDateTime;

/**
 * Todo 할당 이벤트 DTO
 *
 * Meeting 또는 AI 서비스에서 Todo 할당 시 발행되는 이벤트
 * Todo 할당 알림 발송에 사용
 *
 * @author 준호 (Backend Developer)
 * @version 1.0
 * @since 2025-10-23
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TodoAssignedEvent {

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

    /**
     * Todo ID
     */
    private String todoId;

    /**
     * Todo 제목
     */
    private String title;

    /**
     * Todo 설명
     */
    private String description;

    /**
     * 마감 기한
     */
    private LocalDateTime deadline;

    /**
     * 우선순위 (HIGH, MEDIUM, LOW)
     */
    private String priority;

    /**
     * 할당자 정보
     */
    private UserInfo assignedBy;

    /**
     * 담당자 정보
     */
    private UserInfo assignee;

    /**
     * 관련 회의 ID (회의에서 생성된 Todo인 경우)
     */
    private String meetingId;

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

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

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

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