package com.social.media.application.analytics.command;

import com.social.media.domain.analytics.valueobject.MetricType;
import com.social.media.domain.analytics.valueobject.ReportType;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * Command to create a new analytics report
 */
public class CreateAnalyticsReportCommand {
    
    private final String companyId;
    private final ReportType reportType;
    private final MetricType metricType; // Optional
    private final LocalDateTime periodStart;
    private final LocalDateTime periodEnd;
    private final String title;
    private final String description;
    private final Map<String, Object> initialData;
    
    public CreateAnalyticsReportCommand(String companyId, ReportType reportType, MetricType metricType,
                                       LocalDateTime periodStart, LocalDateTime periodEnd,
                                       String title, String description, Map<String, Object> initialData) {
        this.companyId = companyId;
        this.reportType = reportType;
        this.metricType = metricType;
        this.periodStart = periodStart;
        this.periodEnd = periodEnd;
        this.title = title;
        this.description = description;
        this.initialData = initialData;
    }
    
    // Getters
    public String getCompanyId() { return companyId; }
    public ReportType getReportType() { return reportType; }
    public MetricType getMetricType() { return metricType; }
    public LocalDateTime getPeriodStart() { return periodStart; }
    public LocalDateTime getPeriodEnd() { return periodEnd; }
    public String getTitle() { return title; }
    public String getDescription() { return description; }
    public Map<String, Object> getInitialData() { return initialData; }
}

