added new rml stuff

This commit is contained in:
Luca Haid
2025-11-03 12:59:00 +01:00
parent 37be99b284
commit 887552a734
7 changed files with 306 additions and 20 deletions

View File

@@ -14,6 +14,8 @@ class WorkorderModel extends TTCrudBaseModel
public ?int $deadlineDate;
public ?int $appointmentDate;
public ?string $additionalInfo;
public ?string $cableLength;
public ?string $cableType;
public int $create;
public int $createBy;

View File

@@ -143,6 +143,18 @@ class WorkorderCompanyController extends WorkorderBaseController {
$workorder = WorkorderModel::get($this->postData['workorderId']);
if (!$workorder) self::sendError("Arbeitsauftrag nicht gefunden.");
// START ADDED VALIDATION
$tenantConfig = $this->getTenantConfigFromWorkorder($workorder->id);
if ($tenantConfig) {
if ($tenantConfig->requireCableLength && empty(trim($workorder->cableLength))) {
self::sendError("Bitte geben Sie die Kabellänge an, um den Auftrag abzuschließen.");
}
if ($tenantConfig->requireCableType && empty(trim($workorder->cableType))) {
self::sendError("Bitte geben Sie den Kabeltyp an, um den Auftrag abzuschließen.");
}
}
// END ADDED VALIDATION
$workorder->status = 'documented';
WorkorderModel::update((array)$workorder);
self::returnJson(['success' => true, 'message' => 'Arbeitsauftrag zur Prüfung eingereicht.']);
@@ -155,7 +167,14 @@ class WorkorderCompanyController extends WorkorderBaseController {
self::returnJson(['success' => false, 'message' => 'Keine Mandantenkonfiguration gefunden.']);
return;
}
self::returnJson(['success' => true, 'documentationTypes' => json_decode($tenantConfig->documentationTypes, true), 'civilEngineeringDocsRequired' => $tenantConfig->civilEngineeringDocsRequired, 'interventionTypes' => json_decode($tenantConfig->interventionTypes, true)]);
self::returnJson([
'success' => true,
'documentationTypes' => json_decode($tenantConfig->documentationTypes, true),
'civilEngineeringDocsRequired' => $tenantConfig->civilEngineeringDocsRequired,
'interventionTypes' => json_decode($tenantConfig->interventionTypes, true),
'requireCableLength' => $tenantConfig->requireCableLength,
'requireCableType' => $tenantConfig->requireCableType
]);
}
protected function uploadDocumentationAction() {
@@ -237,5 +256,52 @@ class WorkorderCompanyController extends WorkorderBaseController {
]);
self::returnJson(['success' => true, 'message' => 'Tiefbau erfolgreich abgeschlossen.']);
}
protected function updateWorkorderDataAction() {
if (empty($this->postData['workorderId'])) self::sendError("Arbeitsauftrags-ID fehlt.");
$workorder = WorkorderModel::get($this->postData['workorderId']);
if (!$workorder) self::sendError("Arbeitsauftrag nicht gefunden.");
$journalText = "Zusatzdaten aktualisiert:\n";
$changed = false;
if (isset($this->postData['cableLength'])) {
if ($workorder->cableLength != $this.postData['cableLength']) {
$journalText .= "Kabellänge: '{$workorder->cableLength}' -> '{$this->postData['cableLength']}'\n";
$workorder->cableLength = $this.postData['cableLength'];
$changed = true;
}
}
if (isset($this->postData['cableType'])) {
if ($workorder->cableType != $this.postData['cableType']) {
$journalText .= "Kabeltyp: '{$workorder->cableType}' -> '{$this->postData['cableType']}'\n";
$workorder->cableType = $this.postData['cableType'];
$changed = true;
}
}
if (!$changed) {
self::returnJson(['success' => true, 'message' => 'Keine Änderungen vorgenommen.']);
return;
}
WorkorderModel::update((array)$workorder);
WorkorderJournalModel::create([
'workorderId' => $workorder->id,
'text' => $journalText,
'create' => time(),
'createBy' => $this->user->id,
]);
// Re-fetch journals to return
$journals = WorkorderJournalModel::getAll(['workorderId' => intval($workorder->id)], null, 0, ['key' => 'create', 'order' => 'DESC']);
foreach ($journals as $journal) {
$journal->createByName = UserModel::getOne($journal->createBy)->name ?? 'Unbekannt';
}
self::returnJson(['success' => true, 'message' => 'Daten gespeichert.', 'journals' => $journals]);
}
//endregion
}

View File

@@ -10,6 +10,8 @@ class WorkorderTenantConfigModel extends TTCrudBaseModel {
public ?string $workorderActiveFilters; // JSON
public ?string $interventionTypes; // JSON
public int $civilEngineeringDocsRequired;
public int $requireCableLength;
public int $requireCableType;
public int $create;
public int $createBy;
@@ -31,4 +33,5 @@ class WorkorderTenantConfigModel extends TTCrudBaseModel {
$row = $result ? $result->fetch_assoc() : null;
return $row ? new self($row) : null;
}}
}
}