package com.social.media.application.analytics.query;

import com.social.media.domain.analytics.valueobject.ReportType;
import com.social.media.domain.analytics.valueobject.MetricType;
import com.social.media.domain.company.valueobject.CompanyId;

import java.time.LocalDateTime;

/**
 * Query to get analytics reports by company with filtering
 */
public class GetAnalyticsReportsByCompanyQuery {
    
    private final CompanyId companyId;
    private final ReportType reportType; // Optional filter
    private final MetricType metricType; // Optional filter
    private final LocalDateTime periodStart; // Optional filter
    private final LocalDateTime periodEnd; // Optional filter
    private final int page;
    private final int size;
    
    public GetAnalyticsReportsByCompanyQuery(CompanyId companyId, ReportType reportType, MetricType metricType,
                                            LocalDateTime periodStart, LocalDateTime periodEnd, 
                                            int page, int size) {
        this.companyId = companyId;
        this.reportType = reportType;
        this.metricType = metricType;
        this.periodStart = periodStart;
        this.periodEnd = periodEnd;
        this.page = page;
        this.size = size;
    }
    
    // Getters
    public CompanyId getCompanyId() { return companyId; }
    public ReportType getReportType() { return reportType; }
    public MetricType getMetricType() { return metricType; }
    public LocalDateTime getPeriodStart() { return periodStart; }
    public LocalDateTime getPeriodEnd() { return periodEnd; }
    public int getPage() { return page; }
    public int getSize() { return size; }
}

