- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/lib/integration/report/handler/lostcalls/lostcalls.php
- Класс: BitrixVoximplantIntegrationReportHandlerLostCallsLostCalls
- Вызов: LostCalls::prepareEntityListFilter
public function prepareEntityListFilter($requestParameters): Query
{
$missedQuery = StatisticMissedTable::query();
$fields = StatisticMissedTable::getEntity()->getScalarFields();
foreach ($fields as $field)
{
$missedQuery->addSelect($field->getName());
}
$missedQuery->registerRuntimeField(new ExpressionField(
'UNANSWERED',
"if(DATE_SUB(%s, INTERVAL 24 HOUR) <= %s, 'N', 'Y')",
['CALLBACK_CALL_START_DATE', 'CALL_START_DATE'])
);
$missedQuery->where('UNANSWERED', '=', 'Y');
$sliderFilterParameters = $this->mergeRequestWithReportFilter($requestParameters->toArray());
$this->addToQueryFilterCase($missedQuery, $sliderFilterParameters);
$missedQuery->whereBetween(
'CALL_START_DATE',
DateTime::createFromUserTime($requestParameters->get('START_DATE_from')),
DateTime::createFromUserTime($requestParameters->get('START_DATE_to'))
);
//The calling code expects that this method will return a query to StatisticTable
// and can add filters to its fields.
// @see CVoximplantStatisticDetailComponent createReportSliderQuery
$query = StatisticTable::query();
$query->setSelect(['ID']);
$query->registerRuntimeField(new Reference(
'STATISTIC_MISSED',
BitrixMainEntityBase::getInstanceByQuery($missedQuery),
Join::on('this.ID', 'ref.ID'),
['join_type' => Join::TYPE_INNER]
));
return $query;
}