added new features

This commit is contained in:
Luca Haid
2025-08-20 14:24:02 +02:00
parent 2110c58730
commit d09b0a75d4
4 changed files with 146 additions and 32 deletions

View File

@@ -19,6 +19,7 @@ class RMLWorkorderAdminController extends TTCrud
['value' => 'scheduled', 'text' => 'Terminiert', 'icon' => 'fas fa-calendar-check text-warning'],
['value' => 'correction_requested', 'text' => 'Korrektur angefordert', 'icon' => 'fas fa-exclamation-triangle text-danger'],
['value' => 'intervention_required', 'text' => 'Eingriff benötigt', 'icon' => 'fas fa-times-circle text-danger'],
['value' => 'problem_solved', 'text' => 'Problem behoben', 'icon' => 'fas fa-check-circle text-success'],
['value' => 'documented', 'text' => 'Dokumentiert', 'icon' => 'fas fa-file-alt text-success'],
['value' => 'completed', 'text' => 'Abgeschlossen', 'icon' => 'fas fa-check-double text-secondary'],
]]],
@@ -101,23 +102,6 @@ class RMLWorkorderAdminController extends TTCrud
}
}
protected function assignWorkorderAction() {
$post = json_decode(file_get_contents('php://input'), true);
if (empty($post['workorderId']) || empty($post['companyId'])) self::sendError("Required fields are missing.");
$workorder = RMLWorkorderModel::get($post['workorderId']);
if (!$workorder) self::sendError("Workorder not found.");
$workorder->companyId = $post['companyId'];
$workorder->status = 'assigned';
$workorder->assignmentDate = time();
$workorder->deadlineDate = $post['deadlineDate'] ?? strtotime('+6 weeks');
RMLWorkorderModel::update((array)$workorder);
self::returnJson(['success' => true, 'message' => 'Auftrag erfolgreich zugewiesen.']);
}
protected function getDocumentationAction() {
if(empty($this->request->workorderId)) self::sendError("Workorder ID missing.");
@@ -137,20 +121,66 @@ class RMLWorkorderAdminController extends TTCrud
self::returnJson(['docs' => $docs, 'journals' => $journals]);
}
private function assignSingleWorkorder($workorderId, $companyId, $deadline, $userId) {
$workorder = RMLWorkorderModel::get($workorderId);
if (!$workorder) {
return false;
}
$company = RMLWorkorderCompanyModel::get($companyId);
if (!$company) {
return false;
}
$workorder->companyId = $companyId;
$workorder->status = 'assigned';
$workorder->assignmentDate = time();
$workorder->deadlineDate = $deadline;
RMLWorkorderModel::update((array)$workorder);
RMLWorkorderJournalModel::create([
'workorderId' => $workorder->id,
'text' => "Firma '{$company->name}' wurde zugewiesen.",
'create' => time(),
'createBy' => $userId,
]);
$preorder = new Preorder($workorder->preorderId);
if ($preorder) {
$preorder->status_id = 10; // Assuming 10 is the status for "assigned"
$preorder->edit_by = $this->user->id;
$preorder->save();
}
return true;
}
protected function assignWorkorderAction() {
$post = json_decode(file_get_contents('php://input'), true);
if (empty($post['workorderId']) || empty($post['companyId'])) {
self::sendError("Erforderliche Felder fehlen.");
}
$deadline = !empty($post['deadlineDate']) ? $post['deadlineDate'] : strtotime('+6 weeks');
$success = $this->assignSingleWorkorder($post['workorderId'], $post['companyId'], $deadline, $this->user->id);
if ($success) {
self::returnJson(['success' => true, 'message' => 'Auftrag erfolgreich zugewiesen.']);
} else {
self::sendError("Auftrag konnte nicht zugewiesen werden. Möglicherweise wurde er bereits bearbeitet oder existiert nicht.");
}
}
protected function massAssignWorkordersAction() {
$post = json_decode(file_get_contents('php://input'), true);
if (empty($post['workorderIds']) || empty($post['companyId'])) self::sendError("Required fields are missing.");
if (empty($post['workorderIds']) || empty($post['companyId'])) {
self::sendError("Erforderliche Felder fehlen.");
}
$deadline = strtotime($post['deadlineDate'] ?? '+6 weeks');
$count = 0;
foreach ($post['workorderIds'] as $workorderId) {
$workorder = RMLWorkorderModel::get($workorderId);
if ($workorder && $workorder->status === 'new') {
$workorder->companyId = $post['companyId'];
$workorder->status = 'assigned';
$workorder->assignmentDate = time();
$workorder->deadlineDate = $deadline;
RMLWorkorderModel::update((array)$workorder);
if ($this->assignSingleWorkorder($workorderId, $post['companyId'], $deadline, $this->user->id)) {
$count++;
}
}
@@ -260,4 +290,44 @@ class RMLWorkorderAdminController extends TTCrud
self::returnJson(['success' => true, 'message' => 'Dokumentation akzeptiert und Auftrag abgeschlossen.']);
}
protected function setToProblemSolvedAction() {
// const response = await axios.post(`${window.TT_CONFIG.BASE_PATH}/RMLWorkorderAdmin/setToProblemSolved`, {
// workorderId: row.id,
// text: text
// });
$post = json_decode(file_get_contents('php://input'), true);
if (empty($post['workorderId']) || empty($post['text'])) {
self::sendError("Workorder ID und Text sind erforderlich.");
}
$workorder = RMLWorkorderModel::get($post['workorderId']);
if (!$workorder) {
self::sendError("Workorder nicht gefunden.");
}
if ($workorder->status !== 'intervention_required') {
self::sendError("Der Auftrag muss den Status 'Eingriff benötigt' haben, um als Problem gelöst markiert zu werden.");
}
$oldStatus = $workorder->status;
$workorder->status = 'problem_solved';
RMLWorkorderModel::update((array)$workorder);
$oldStatusText = $oldStatus === 'intervention_required' ? 'Eingriff benötigt' : $oldStatus;
$problem_solved = 'Problem gelöst';
RMLWorkorderJournalModel::create([
'workorderId' => $workorder->id,
'text' => $post['text'],
'statusChange' => "$oldStatusText -> $problem_solved",
'create' => time(),
'createBy' => $this->user->id,
]);
self::returnJson(['success' => true, 'message' => 'Auftrag als Problem gelöst markiert.']);
}
}