<?php
namespace Common\Admin\Analytics\Actions;
use Common\Database\Metrics\MetricDateRange;
abstract class BuildAnalyticsReport
{
protected MetricDateRange $dateRange;
protected MetricDateRange|null $compareDateRange = null;
public function __construct(array $params)
{
$this->dateRange = new MetricDateRange(
start: $params['startDate'] ?? null,
end: $params['endDate'] ?? null,
timezone: $params['timezone'] ?? null,
);
if (
isset($params['compareStartDate']) &&
isset($params['compareEndDate'])
) {
$this->compareDateRange = new MetricDateRange(
start: $params['compareStartDate'],
end: $params['compareEndDate'],
timezone: $params['timezone'] ?? null,
);
}
}
/**
* Get data for admin area analytics page from active provider.
* (Demo or Google Analytics currently)
*/
abstract public function execute(): array;
}