improve and add dashboard

This commit is contained in:
Luca Haid
2026-01-28 10:12:16 +01:00
parent 0bc042f987
commit 6a85d4a980
9 changed files with 791 additions and 1 deletions

View File

@@ -283,5 +283,50 @@ class WorkorderBaseController extends TTCrud
}
file_put_contents($lockFile, time());
}
protected function autoCompleteDocumentedWorkorders()
{
$lockFile = TEMP_DIR . "/task_auto_complete_workorders.lock";
if (file_exists($lockFile) && (time() - intval(file_get_contents($lockFile))) < 300) return;
foreach (WorkorderTenantConfigModel::getAll() as $config) {
$filter = json_decode($config->autoCompleteFilter ?? '', true);
if (empty($filter)) continue;
$networks = NetworkModel::search(['owner_id' => $config->addressId]);
if (empty($networks)) continue;
$networkIds = array_map(fn($n) => $n->id, $networks);
$campaignIds = array_map(fn($c) => $c->id, PreordercampaignModel::search(['network_id' => $networkIds]));
if (empty($campaignIds)) continue;
$filter['preordercampaign_id'] = $campaignIds;
$matchingPreorders = PreorderModel::searchActive($filter);
if (empty($matchingPreorders)) continue;
$preorderIds = array_map(fn($p) => $p->id, $matchingPreorders);
$preorderIdSet = array_flip($preorderIds);
$workorders = WorkorderModel::getAll([
'status' => ['new', 'assigned', 'scheduled', 'in_progress', 'correction_requested', 'intervention_required', 'civil_engineering_required', 'civil_engineering_completed', 'problem_solved', 'documented', 'archived'],
'preorderId' => $preorderIds
]);
foreach ($workorders as $workorder) {
if (!isset($preorderIdSet[$workorder->preorderId])) continue;
$oldStatus = $workorder->status;
$workorder->status = 'completed';
WorkorderModel::update((array)$workorder);
WorkorderJournalModel::create([
'workorderId' => $workorder->id,
'text' => 'Dokumentation automatisch akzeptiert (Auto-Complete Filter).',
'statusChange' => $this->getStatusText($oldStatus) . " -> " . $this->getStatusText('completed'),
'create' => time(),
'createBy' => 1,
]);
}
}
file_put_contents($lockFile, time());
}
//endregion
}