File: /var/www/heifetz/heifetz-app/models/LogExport.php
<?php
namespace Models;
use Core\DbLib\DbModel;
use Core\Models\CoreHelper;
use Core\Models\OldUser;
use Helpers\Data;
use Helpers\DataTableHelper;
use Traits\ModelGetQuery;
/**
* @property int $id
* @property int $user_id
* @property string $created_at
* @property string $export
* @property string $description
* @property string $params
* @property int $company_id
*/
class LogExport extends DbModel
{
use ModelGetQuery;
static string $tableName = 'logs_export';
public static function log(string $export, string $description, array $params = []): int
{
return self::create([
'user_id' => OldUser::getRealId(),
'created_at' => date('Y-m-d H:i:s'),
'export' => $export,
'description' => $description,
'params' => Data::jsonEncode($params),
'company_id' => CoreHelper::$companyId,
]
);
}
public static function getFresh(array $options): array
{
[$orderBy, $limit, $offset, $filters] = DataTableHelper::parseOptions($options);
$sql = self::getQuery()->limit($limit, $offset);
$cols = ['user_id', 'created_at', 'export', 'description', 'params', 'id'];
$sql = DataTableHelper::sort($cols, $orderBy, $sql);
if (!empty($filters)) {
foreach ($filters as $filterKey => $value) {
if (empty($value)) {
continue;
}
switch ($filterKey) {
case 'userId':
$sql->whereIn('user_id', $value);
break;
case 'exportName':
$sql->whereIn('description', $value);
break;
case 'startDate':
$sql->where('created_at::date >= ?', $value);
break;
case 'endDate':
$sql->where('created_at::date <= ?', $value);
break;
}
}
}
$totalCount = $sql->totalCount();
/** @var self[] $exports */
$exports = $sql->fetchAll();
$rows = [];
foreach ($exports as $log) {
$row = [];
$row[] = date('d.m.Y H:i', strtotime($log->created_at));
$row[] = $userNames[$log->user_id] ?? OldUser::getName($log->user_id);
$row[] = '<span class="label label-info">' . $log->export . '</span>';
$row[] = $log->description;
$data = json_decode($log->params, true);
$output = '';
if (is_array($data)) {
foreach ($data as $key => $value) {
$output .= $key . ' = ' . (is_array($value) ? implode(', ', $value) : $value) . PHP_EOL;
}
} else {
$output = var_export($data, true);
}
$row[] = '<pre>' . $output . '</pre>';
$rows[] = $row;
}
return ['data' => $rows, 'totalCount' => $totalCount];
}
public static function getExportNames(): array
{
return self::getQuery(['description'])->company()->order('description')->group('description')->fetchCol();
}
}