package com.kt.event.eventservice.application.dto.response;

import com.kt.event.eventservice.domain.enums.EventStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * 이벤트 상세 응답 DTO
 *
 * @author Event Service Team
 * @version 1.0.0
 * @since 2025-10-23
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class EventDetailResponse {

    private String eventId;
    private String userId;
    private String storeId;
    private String eventName;
    private String description;
    private String objective;
    private LocalDate startDate;
    private LocalDate endDate;
    private EventStatus status;
    private String selectedImageId;
    private String selectedImageUrl;
    private Integer participants;
    private Integer targetParticipants;
    private Double roi;

    @Builder.Default
    private List<GeneratedImageDto> generatedImages = new ArrayList<>();

    @Builder.Default
    private List<AiRecommendationDto> aiRecommendations = new ArrayList<>();

    @Builder.Default
    private List<String> channels = new ArrayList<>();

    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class GeneratedImageDto {
        private String imageId;
        private String imageUrl;
        private String style;
        private String platform;
        private boolean isSelected;
        private LocalDateTime createdAt;
    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class AiRecommendationDto {
        private String recommendationId;
        private String eventName;
        private String description;
        private String promotionType;
        private String targetAudience;
        private boolean isSelected;
    }
}
