package com.unicorn.hgzero.meeting.infra.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 회의 생성 요청 DTO
 */
@Getter
@Setter
@NoArgsConstructor
@Schema(description = "회의 생성 요청")
public class CreateMeetingRequest {

    @NotBlank(message = "회의 제목은 필수입니다")
    @jakarta.validation.constraints.Size(max = 100, message = "회의 제목은 100자를 초과할 수 없습니다")
    @Schema(description = "회의 제목", example = "Q1 전략 회의", required = true)
    private String title;

    @NotBlank(message = "회의 목적은 필수입니다")
    @Schema(description = "회의 목적", example = "2025년 1분기 신제품 개발 방향 수립", required = true)
    private String purpose;

    @NotNull(message = "회의 시작 시간은 필수입니다")
    @Schema(description = "회의 시작 시간", example = "2025-01-25T14:00:00", required = true)
    private LocalDateTime startTime;

    @NotNull(message = "회의 종료 시간은 필수입니다")
    @Schema(description = "회의 종료 시간", example = "2025-01-25T16:00:00", required = true)
    private LocalDateTime endTime;

    @NotBlank(message = "회의 장소는 필수입니다")
    @Schema(description = "회의 장소", example = "회의실 A", required = true)
    private String location;

    @Schema(description = "회의 안건", example = "1. Q1 목표 달성 현황 검토\\n2. Q2 전략 방향 논의\\n3. 주요 이슈 및 리스크 검토")
    private String agenda;

    @NotEmpty(message = "참석자 목록은 필수입니다")
    @Schema(description = "참석자 이메일 목록", example = "[\"user1@example.com\", \"user2@example.com\"]", required = true)
    private List<String> participants;
}