diff --git a/sql/structure.sql b/sql/structure.sql index 7e64bba36c93c19324da2b060ebdd64778ef2a97..463970a9f080086afc6164344bae0d8efb4281ad 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -260,6 +260,7 @@ CREATE TABLE workflows note text DEFAULT NULL, process_date timestamp without time zone DEFAULT NULL, digital_signature_id text, + delegate INTEGER, CONSTRAINT workflow_pkey PRIMARY KEY (id) ) WITH (OIDS=FALSE); diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php index 508468180ceb009b87724a0b2e49a11403b129a2..095f5208af62e75bda9f9d2e97d4ce3a3329c924 100755 --- a/src/app/document/controllers/DocumentController.php +++ b/src/app/document/controllers/DocumentController.php @@ -176,7 +176,7 @@ class DocumentController } } - $workflow = WorkflowModel::getByDocumentId(['select' => ['id', 'user_id', 'mode', 'process_date', 'signature_mode', 'status', 'note', 'signature_positions', 'date_positions'], 'documentId' => $args['id'], 'orderBy' => ['"order"']]); + $workflow = WorkflowModel::getByDocumentId(['select' => ['id', 'user_id', 'mode', 'process_date', 'signature_mode', 'status', 'note', 'signature_positions', 'date_positions', 'delegate'], 'documentId' => $args['id'], 'orderBy' => ['"order"']]); $currentFound = false; $currentId = null; foreach ($workflow as $value) { @@ -197,6 +197,12 @@ class DocumentController unset($workflowExternalInformations['informations']['yousignFileId'], $workflowExternalInformations['informations']['yousignProcedureId']); } + $noteCreator = null; + if (!empty($value['note'])) { + $noteCreatorId = !empty($value['delegate']) ? $value['delegate'] : $value['user_id']; + $noteCreator = UserModel::getLabelledUserById(['id' => $noteCreatorId]); + } + $formattedDocument['workflow'][] = [ 'userId' => $value['user_id'], 'userDisplay' => $userLabel, @@ -208,6 +214,7 @@ class DocumentController 'datePositions' => json_decode($value['date_positions'], true), 'userSignatureModes' => !empty($userSignaturesModes['signature_modes']) ? json_decode($userSignaturesModes['signature_modes'], true) : [], 'note' => $value['note'], + 'noteCreator' => $noteCreator, 'status' => $value['status'], 'externalInformations' => $workflowExternalInformations ]; @@ -1069,6 +1076,10 @@ class DocumentController $set = ['process_date' => 'CURRENT_TIMESTAMP', 'status' => $args['status']]; if (!empty($args['note'])) { $set['note'] = $args['note']; + $currentWorkflow = WorkflowModel::getCurrentStep(['select' => ['user_id'], 'documentId' => $args['id']]); + if ($currentWorkflow['user_id'] != $GLOBALS['id']) { + $set['delegate'] = $GLOBALS['id']; + } } WorkflowModel::update([ 'set' => $set, diff --git a/src/frontend/app/document/document.component.html b/src/frontend/app/document/document.component.html index c2f3726183b34b281b7f72cfbcd178e68773a146..3c866fa1be3217af2eb20c40cc1018fbeed9edad 100755 --- a/src/frontend/app/document/document.component.html +++ b/src/frontend/app/document/document.component.html @@ -74,7 +74,7 @@ <ng-container *ngFor="let step of mainDocument.workflow"> <div *ngIf="step.note"> <div class="note-creator"> - {{step.userDisplay}} ({{step.processDate}}) : + {{step.noteCreator}} ({{step.processDate}}) : </div> <div class="note-content"> {{step.note}}