- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/lib/integration/report/handler/missedreaction/missedreaction.php
- Класс: BitrixVoximplantIntegrationReportHandlerMissedReactionMissedReaction
- Вызов: MissedReaction::prepareEntityListFilter
public function prepareEntityListFilter($requestParameters): Query
{
$missedReactionQuery = StatisticMissedTable::query();
$fields = StatisticMissedTable::getEntity()->getScalarFields();
foreach ($fields as $field)
{
$missedReactionQuery->addSelect($field->getName());
}
$requestFilter = $requestParameters->toArray();
if ($requestFilter['UNANSWERED'] === 'Y')
{
$missedReactionQuery->registerRuntimeField(new ExpressionField(
'UNANSWERED',
"if(DATE_SUB(%s, INTERVAL 24 HOUR) <= %s, 'N', 'Y')",
['CALLBACK_CALL_START_DATE', 'CALL_START_DATE'])
);
$missedReactionQuery->where('UNANSWERED', '=', 'Y');
}
$sliderFilterParameters = $this->mergeRequestWithReportFilter($requestFilter);
$this->addToQueryFilterCase($missedReactionQuery, $sliderFilterParameters);
$missedReactionQuery->whereBetween(
'CALL_START_DATE',
DateTime::createFromUserTime($sliderFilterParameters['TIME_PERIOD_from']),
DateTime::createFromUserTime($sliderFilterParameters['TIME_PERIOD_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($missedReactionQuery),
Join::on('this.ID', 'ref.ID'),
['join_type' => Join::TYPE_INNER]
));
return $query;
}