package com.kt.event.analytics.dto.response;

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

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

/**
 * 사용자 전체 이벤트의 ROI 분석 응답
 *
 * 사용자 ID 기반으로 모든 이벤트의 ROI를 통합하여 제공
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserRoiAnalyticsResponse {

    /**
     * 사용자 ID
     */
    private String userId;

    /**
     * 조회 기간 정보
     */
    private PeriodInfo period;

    /**
     * 전체 이벤트 수
     */
    private Integer totalEvents;

    /**
     * 전체 투자 정보 (모든 이벤트 합계)
     */
    private InvestmentDetails overallInvestment;

    /**
     * 전체 수익 정보 (모든 이벤트 합계)
     */
    private RevenueDetails overallRevenue;

    /**
     * 전체 ROI 계산 결과
     */
    private RoiCalculation overallRoi;

    /**
     * 비용 효율성 분석
     */
    private CostEfficiency costEfficiency;

    /**
     * 수익 예측 (포함 여부에 따라 nullable)
     */
    private RevenueProjection projection;

    /**
     * 이벤트별 ROI 목록
     */
    private List<EventRoiSummary> eventRois;

    /**
     * 마지막 업데이트 시간
     */
    private LocalDateTime lastUpdatedAt;

    /**
     * 데이터 출처
     */
    private String dataSource;

    /**
     * 이벤트별 ROI 요약
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class EventRoiSummary {
        private String eventId;
        private String eventTitle;
        private Double totalInvestment;
        private Double expectedRevenue;
        private Double roi;
        private String status;
    }
}
