From 78e04fb7d7ba684aaa86bf3a40ff5a15a53ad6cb Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Tue, 14 Jan 2020 11:18:18 +0100 Subject: [PATCH] FEAT #12764 TIME 0:20 Get items by resource --- rest/index.php | 15 ++-- .../resource/controllers/ResController.php | 88 +++++++++++-------- src/frontend/app/signature-book.component.ts | 16 ++-- 3 files changed, 70 insertions(+), 49 deletions(-) diff --git a/rest/index.php b/rest/index.php index d3511c4f825..ab666c492d3 100755 --- a/rest/index.php +++ b/rest/index.php @@ -339,6 +339,7 @@ $app->get('/resources/{resId}/content', \Resource\controllers\ResController::cla $app->get('/resources/{resId}/originalContent', \Resource\controllers\ResController::class . ':getOriginalFileContent'); $app->get('/resources/{resId}/thumbnail', \Resource\controllers\ResController::class . ':getThumbnailContent'); $app->get('/resources/{resId}/isAllowed', \Resource\controllers\ResController::class . ':isAllowedForCurrentUser'); +$app->get('/resources/{resId}/items', \Resource\controllers\ResController::class . ':getItems'); $app->get('/resources/{resId}/attachments', \Attachment\controllers\AttachmentController::class . ':getByResId'); $app->get('/resources/{resId}/contacts', \Contact\controllers\ContactController::class . ':getByResId'); $app->get('/resources/{resId}/emails', \Email\controllers\EmailController::class . ':getByResId'); @@ -352,19 +353,14 @@ $app->delete('/resources/{resId}/circuits/{type}', \Entity\controllers\ListInsta $app->get('/resources/{resId}/linkedResources', \Resource\controllers\LinkController::class . ':getLinkedResources'); $app->post('/resources/{resId}/linkedResources', \Resource\controllers\LinkController::class . ':linkResources'); $app->delete('/resources/{resId}/linkedResources/{id}', \Resource\controllers\LinkController::class . ':unlinkResources'); + $app->get('/res/{resId}/acknowledgementReceipt/{id}', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getAcknowledgementReceipt'); $app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus'); $app->post('/res/list', \Resource\controllers\ResController::class . ':getList'); -$app->get('/res/{resId}/notes/count', \Resource\controllers\ResController::class . ':getNotesCountForCurrentUserById'); $app->put('/res/externalInfos', \Resource\controllers\ResController::class . ':updateExternalInfos'); $app->get('/categories', \Resource\controllers\ResController::class . ':getCategories'); $app->get('/resources/{resId}/users/{userId}/isDestinationChanging', \Action\controllers\PreProcessActionController::class . ':isDestinationChanging'); $app->get('/resources/{resId}/users/{userId}/groups/{groupId}/baskets/{basketId}/processingData', \Resource\controllers\ResController::class . ':getProcessingData'); -$app->post('/resources/follow', \Resource\controllers\UserFollowedResourceController::class . ':follow'); -$app->delete('/resources/unfollow', \Resource\controllers\UserFollowedResourceController::class . ':unFollow'); -$app->get('/followedResources', \Resource\controllers\UserFollowedResourceController::class . ':getFollowedResources'); -$app->get('/followedResources/{resId}/baskets', \Resource\controllers\UserFollowedResourceController::class . ':getBaskets'); -$app->get('/followedResources/filters', \Resource\controllers\UserFollowedResourceController::class . ':getFilters'); //ResourcesList $app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}', \Resource\controllers\ResourceListController::class . ':get'); @@ -468,6 +464,13 @@ $app->put('/users/{id}/accountActivationNotification', \User\controllers\UserCon $app->post('/password', \User\controllers\UserController::class . ':forgotPassword'); $app->put('/password', \User\controllers\UserController::class . ':passwordInitialization'); +//UserFollowedResources +$app->post('/resources/follow', \Resource\controllers\UserFollowedResourceController::class . ':follow'); +$app->delete('/resources/unfollow', \Resource\controllers\UserFollowedResourceController::class . ':unFollow'); +$app->get('/followedResources', \Resource\controllers\UserFollowedResourceController::class . ':getFollowedResources'); +$app->get('/followedResources/{resId}/baskets', \Resource\controllers\UserFollowedResourceController::class . ':getBaskets'); +$app->get('/followedResources/filters', \Resource\controllers\UserFollowedResourceController::class . ':getFilters'); + //VersionsUpdate $app->get('/versionsUpdate', \VersionUpdate\controllers\VersionUpdateController::class . ':get'); $app->put('/versionsUpdate', \VersionUpdate\controllers\VersionUpdateController::class . ':update'); diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php index eafd381c378..fd6a5566afe 100755 --- a/src/app/resource/controllers/ResController.php +++ b/src/app/resource/controllers/ResController.php @@ -27,6 +27,7 @@ use CustomField\models\CustomFieldModel; use Docserver\models\DocserverModel; use Docserver\models\DocserverTypeModel; use Doctype\models\DoctypeModel; +use Email\models\EmailModel; use Entity\models\EntityModel; use Entity\models\ListInstanceModel; use Folder\controllers\FolderController; @@ -116,7 +117,7 @@ class ResController $queryParams = $request->getQueryParams(); - $select = ['model_id', 'category_id', 'priority', 'subject', 'alt_identifier', 'process_limit_date', 'closing_date', 'creation_date', 'modification_date', 'linked_resources']; + $select = ['model_id', 'category_id', 'priority', 'subject', 'alt_identifier', 'process_limit_date', 'closing_date', 'creation_date', 'modification_date']; if (empty($queryParams['light'])) { $select = array_merge($select, ['type_id', 'typist', 'status', 'destination', 'initiator', 'confidentiality', 'doc_date', 'admission_date', 'departure_date', 'barcode', 'custom_fields']); } @@ -227,21 +228,6 @@ class ResController $tags = TagResModel::get(['select' => ['tag_id'], 'where' => ['res_id = ?'], 'data' => [$args['resId']]]); $formattedData['tags'] = array_column($tags, 'tag_id'); } else { - $linkedResources = json_decode($document['linked_resources'], true); - $formattedData['linkedResources'] = count($linkedResources); - - $attachments = AttachmentModel::get(['select' => ['count(1)'], 'where' => ['res_id_master = ?', 'status in (?)'], 'data' => [$args['resId'], ['TRA', 'A_TRA', 'FRZ']]]); - $formattedData['attachments'] = $attachments[0]['count']; - - $formattedData['diffusionList'] = 0; - $formattedData['visaCircuit'] = 0; - $formattedData['opinionCircuit'] = 0; - $listInstanceItems = ListInstanceModel::get(['select' => ['count(1)', 'difflist_type'], 'where' => ['res_id = ?'], 'data' => [$args['resId']], 'groupBy' => ['difflist_type']]); - foreach ($listInstanceItems as $item) { - $type = $item['difflist_type'] == 'entity_id' ? 'diffusionList' : ($item['difflist_type'] == 'VISA_CIRCUIT' ? 'visaCircuit' : 'opinionCircuit'); - $formattedData[$type] = $item['count']; - } - $followed = UserFollowedResourceModel::get([ 'select' => [1], 'where' => ['user_id = ?', 'res_id = ?'], @@ -628,6 +614,57 @@ class ResController return $response->withHeader('Content-Type', $mimeType); } + public function getItems(Request $request, Response $response, array $args) + { + if (!Validator::intVal()->validate($args['resId']) || !ResController::hasRightByResId(['resId' => [$args['resId']], 'userId' => $GLOBALS['id']])) { + return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); + } + + $document = ResModel::getById([ + 'select' => ['linked_resources'], + 'resId' => $args['resId'] + ]); + if (empty($document)) { + return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']); + } + + $linkedResources = json_decode($document['linked_resources'], true); + $formattedData['linkedResources'] = count($linkedResources); + + $attachments = AttachmentModel::get(['select' => ['count(1)'], 'where' => ['res_id_master = ?', 'status in (?)'], 'data' => [$args['resId'], ['TRA', 'A_TRA', 'FRZ']]]); + $formattedData['attachments'] = $attachments[0]['count']; + + $formattedData['diffusionList'] = 0; + $formattedData['visaCircuit'] = 0; + $formattedData['opinionCircuit'] = 0; + $listInstanceItems = ListInstanceModel::get(['select' => ['count(1)', 'difflist_type'], 'where' => ['res_id = ?'], 'data' => [$args['resId']], 'groupBy' => ['difflist_type']]); + foreach ($listInstanceItems as $item) { + $type = $item['difflist_type'] == 'entity_id' ? 'diffusionList' : ($item['difflist_type'] == 'VISA_CIRCUIT' ? 'visaCircuit' : 'opinionCircuit'); + $formattedData[$type] = $item['count']; + } + + $formattedData['notes'] = NoteModel::countByResId(['resId' => $args['resId'], 'userId' => $GLOBALS['id'], 'login' => $GLOBALS['userId']]); + + $emails = EmailModel::get(['select' => ['count(1)'], 'where' => ["document->>'id' = ?"], 'data' => [$args['resId']]]); + $formattedData['emails'] = $emails[0]['count']; + + return $response->withJson($formattedData); + } + + public function getCategories(Request $request, Response $response) + { + return $response->withJson(['categories' => ResModel::getCategories()]); + } + + public function isAllowedForCurrentUser(Request $request, Response $response, array $aArgs) + { + if (!Validator::intVal()->validate($aArgs['resId']) || !ResController::hasRightByResId(['resId' => [$aArgs['resId']], 'userId' => $GLOBALS['id']])) { + return $response->withJson(['isAllowed' => false]); + } + + return $response->withJson(['isAllowed' => true]); + } + public function updateExternalInfos(Request $request, Response $response) { //TODO Revoir cette fonction @@ -668,25 +705,6 @@ class ResController return $response->withJson(['success' => 'success']); } - public function getNotesCountForCurrentUserById(Request $request, Response $response, array $aArgs) - { - return $response->withJson(NoteModel::countByResId(['resId' => $aArgs['resId'], 'userId' => $GLOBALS['id'], 'login' => $GLOBALS['userId']])); - } - - public function getCategories(Request $request, Response $response) - { - return $response->withJson(['categories' => ResModel::getCategories()]); - } - - public function isAllowedForCurrentUser(Request $request, Response $response, array $aArgs) - { - if (!Validator::intVal()->validate($aArgs['resId']) || !ResController::hasRightByResId(['resId' => [$aArgs['resId']], 'userId' => $GLOBALS['id']])) { - return $response->withJson(['isAllowed' => false]); - } - - return $response->withJson(['isAllowed' => true]); - } - public static function getEncodedDocument(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['resId']); diff --git a/src/frontend/app/signature-book.component.ts b/src/frontend/app/signature-book.component.ts index 013ea35c7aa..5bc88eb952d 100755 --- a/src/frontend/app/signature-book.component.ts +++ b/src/frontend/app/signature-book.component.ts @@ -372,17 +372,17 @@ export class SignatureBookComponent implements OnInit { } refreshNotes() { - this.http.get(this.coreUrl + 'rest/res/' + this.resId + '/notes/count') - .subscribe((data : any) => { - this.signatureBook.nbNotes = data; - }); + // this.http.get(this.coreUrl + 'rest/res/' + this.resId + '/notes/count') + // .subscribe((data : any) => { + // this.signatureBook.nbNotes = data; + // }); } refreshLinks() { - this.http.get(this.coreUrl + 'rest/links/resId/' + this.resId) - .subscribe((data : any) => { - this.signatureBook.nbLinks = data.length; - }); + // this.http.get(this.coreUrl + 'rest/links/resId/' + this.resId) + // .subscribe((data : any) => { + // this.signatureBook.nbLinks = data.length; + // }); } signFile(attachment: any, signature: any) { -- GitLab