- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/lib/monitor/history/history.php
- Класс: BitrixTimemanMonitorHistoryHistory
- Вызов: History::getForPeriod
static function getForPeriod(int $userId, Date $dateStart, Date $dateFinish): array
{
$query = MonitorUserLogTable::query();
$query->setSelect([
'TYPE' => 'entity.TYPE',
'TITLE' => 'entity.TITLE',
'ENTITY_ID',
'TIME_SPEND',
'COMMENT' => 'monitor_comment.COMMENT',
'ABSENCE_TIME_START' => 'absence.TIME_START'
]);
$query->registerRuntimeField(new ReferenceField(
'entity',
MonitorEntityTable::class,
Join::on('this.ENTITY_ID', 'ref.ID')
));
$query->registerRuntimeField(new ReferenceField(
'monitor_comment',
MonitorCommentTable::class,
Join::on('this.ID', 'ref.USER_LOG_ID')
->whereColumn('this.USER_ID', 'USER_ID')
));
$query->registerRuntimeField(new ReferenceField(
'absence',
MonitorAbsenceTable::class,
Join::on('this.ID', 'ref.USER_LOG_ID')
));
$query->addFilter('=USER_ID', $userId);
$query->whereBetween('DATE_LOG', $dateStart, $dateFinish);
$history = $query->exec()->fetchAll();
foreach ($history as $index => $entity)
{
if ($entity['ABSENCE_TIME_START'])
{
$history[$index]['TITLE'] =
$entity['TITLE']
. ' '
. Loc::getMessage('TIMEMAN_MONITOR_HISTORY_FROM_TIME')
. ' '
. DateTime::createFromUserTime($entity['ABSENCE_TIME_START'])->format('H:i')
;
}
}
return $history;
}