Skip to content
Snippets Groups Projects
Verified Commit 41dd465a authored by Damien's avatar Damien
Browse files

FEAT #10240 TIME 4:15 Get Linked mailing documents

parent da67780e
No related branches found
No related tags found
No related merge requests found
......@@ -85,6 +85,7 @@ $app->get('/documents/{id}/proof', \History\controllers\HistoryController::class
$app->get('/documents/{id}/history', \History\controllers\HistoryController::class . ':getByDocumentId');
$app->put('/documents/{id}/actions/{actionId}', \Document\controllers\DocumentController::class . ':setAction');
$app->get('/documents/{id}/workflow', \Workflow\controllers\WorkflowController::class . ':getByDocumentId');
$app->get('/documents/{id}/linkedMailing', \Document\controllers\DocumentController::class . ':getLinkedMailing');
$app->get('/documents/{id}/thumbnails/{page}', \Document\controllers\DocumentController::class . ':getThumbnailContent');
$app->put('/documents/{id}/workflows/interrupt', \Workflow\controllers\WorkflowController::class . ':interrupt');
......
......@@ -78,3 +78,6 @@ DO $$ BEGIN
VALUES ('ORIGINAL', 'Documents originaux', 'N', 50000000000, 0, '/opt/maarchparapheur/docservers/original_documents/');
END IF;
END$$;
ALTER TABLE main_documents DROP COLUMN IF EXISTS mailing_id;
ALTER TABLE main_documents ADD COLUMN mailing_id text;
......@@ -102,7 +102,7 @@ class DocumentController
}
$documents = DocumentModel::get([
'select' => ['id', 'title', 'reference', 'count(1) OVER()'],
'select' => ['id', 'title', 'reference', 'mailing_id as "mailingId"', 'count(1) OVER()'],
'where' => $where,
'data' => $data,
'limit' => $queryParams['limit'],
......@@ -157,7 +157,8 @@ class DocumentController
'creationDate' => $document['creation_date'],
'modificationDate' => $document['modification_date'],
'pages' => $adr[0]['count'],
'status' => $document['status']
'status' => $document['status'],
'mailingId' => $document['mailing_id']
];
if (!empty($document['deadline'])) {
$date = new \DateTime($document['deadline']);
......@@ -918,6 +919,36 @@ class DocumentController
return $response->withJson(['fileContent' => $base64Content]);
}
public function getLinkedMailing(Request $request, Response $response, array $args)
{
if (!DocumentController::hasRightById(['id' => $args['id'], 'userId' => $GLOBALS['id']])) {
return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
}
$document = DocumentModel::getById(['select' => ['mailing_id'], 'id' => $args['id']]);
if (empty($document['mailing_id'])) {
return $response->withStatus(400)->withJson(['errors' => 'Document has no mailing id']);
}
$workflowSelect = "SELECT id FROM workflows ws WHERE workflows.main_document_id = main_document_id AND process_date IS NULL AND status IS NULL ORDER BY \"order\" LIMIT 1";
$workflows = WorkflowModel::get([
'select' => ['main_document_id'],
'where' => ['user_id = ?', "(id) in ({$workflowSelect})"],
'data' => [$GLOBALS['id']]
]);
$ids = array_column($workflows, 'main_document_id');
$documents = DocumentModel::get([
'select' => ['id'],
'where' => ['id in (?)', 'mailing_id = ?'],
'data' => [$ids, $document['mailing_id']]
]);
$documentsId = array_column($documents, 'id');
return $response->withJson(['documents' => $documentsId]);
}
public static function hasRightById(array $args)
{
ValidatorModel::notEmpty($args, ['id', 'userId']);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment