improve and add dashboard
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user