37 lines
1.3 KiB
PHP
37 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Analytics;
|
|
|
|
use App\Models\Department;
|
|
use App\Models\User;
|
|
use App\Services\DateRange;
|
|
|
|
/**
|
|
* Запрос на построение отчёта: что и как агрегировать.
|
|
*/
|
|
readonly class AnalyticsQuery
|
|
{
|
|
/**
|
|
* @param array<int,string> $dimensions ключи измерений (в порядке отображения)
|
|
* @param array<int,string> $measures ключи показателей (в порядке отображения)
|
|
* @param array<int,array{key:string,value:mixed}> $filters
|
|
* @param 'period'|'dynamics' $mode
|
|
* @param 'day'|'week'|'month' $detalization
|
|
* @param array{metric?:string,type?:string} $chart
|
|
* @param Measure[] $customMeasures пользовательские показатели, подмешиваемые к датасету
|
|
*/
|
|
public function __construct(
|
|
public string $datasetKey,
|
|
public array $dimensions,
|
|
public array $measures,
|
|
public array $filters,
|
|
public string $mode,
|
|
public string $detalization,
|
|
public Department $department,
|
|
public DateRange $dateRange,
|
|
public array $chart = [],
|
|
public array $customMeasures = [],
|
|
public ?User $user = null,
|
|
) {}
|
|
}
|