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

FEAT #11691 TIME 0:25 Get templates by res id

parent 3689a78c
No related branches found
No related tags found
No related merge requests found
...@@ -324,6 +324,7 @@ $app->get('/resources/{resId}/isAllowed', \Resource\controllers\ResController::c ...@@ -324,6 +324,7 @@ $app->get('/resources/{resId}/isAllowed', \Resource\controllers\ResController::c
$app->get('/resources/{resId}/attachments', \Attachment\controllers\AttachmentController::class . ':getByResId'); $app->get('/resources/{resId}/attachments', \Attachment\controllers\AttachmentController::class . ':getByResId');
$app->get('/resources/{resId}/emails', \Email\controllers\EmailController::class . ':getByResId'); $app->get('/resources/{resId}/emails', \Email\controllers\EmailController::class . ':getByResId');
$app->get('/resources/{resId}/notes', \Note\controllers\NoteController::class . ':getByResId'); $app->get('/resources/{resId}/notes', \Note\controllers\NoteController::class . ':getByResId');
$app->get('/resources/{resId}/templates', \Template\controllers\TemplateController::class . ':getByResId');
$app->get('/res/{resId}/acknowledgementReceipt/{id}', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getAcknowledgementReceipt'); $app->get('/res/{resId}/acknowledgementReceipt/{id}', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getAcknowledgementReceipt');
$app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus'); $app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus');
$app->post('/res/list', \Resource\controllers\ResController::class . ':getList'); $app->post('/res/list', \Resource\controllers\ResController::class . ':getList');
......
...@@ -18,6 +18,8 @@ use Docserver\controllers\DocserverController; ...@@ -18,6 +18,8 @@ use Docserver\controllers\DocserverController;
use Docserver\models\DocserverModel; use Docserver\models\DocserverModel;
use Group\controllers\PrivilegeController; use Group\controllers\PrivilegeController;
use History\controllers\HistoryController; use History\controllers\HistoryController;
use Resource\controllers\ResController;
use Resource\models\ResModel;
use Respect\Validation\Validator; use Respect\Validation\Validator;
use Slim\Http\Request; use Slim\Http\Request;
use Slim\Http\Response; use Slim\Http\Response;
...@@ -27,6 +29,7 @@ use Template\models\TemplateAssociationModel; ...@@ -27,6 +29,7 @@ use Template\models\TemplateAssociationModel;
use Template\models\TemplateModel; use Template\models\TemplateModel;
use Attachment\models\AttachmentModel; use Attachment\models\AttachmentModel;
use Entity\models\EntityModel; use Entity\models\EntityModel;
use User\models\UserModel;
class TemplateController class TemplateController
{ {
...@@ -380,6 +383,60 @@ class TemplateController ...@@ -380,6 +383,60 @@ class TemplateController
]); ]);
} }
public function getByResId(Request $request, Response $response, array $args)
{
if (!Validator::intVal()->validate($args['resId'])) {
return $response->withStatus(400)->withJson(['errors' => 'Route resId is not an integer']);
}
if (!ResController::hasRightByResId(['resId' => [$args['resId']], 'userId' => $GLOBALS['id']])) {
return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
}
$resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['destination']]);
if (!empty($resource['destination'])) {
$entities = [$resource['destination']];
} else {
$entities = UserModel::getEntitiesByLogin(['login' => $GLOBALS['userId']]);
$entities = array_column($entities, 'entity_id');
if (empty($entities)) {
$entities = [0];
}
}
$where = ['(templates_association.value_field in (?) OR templates_association.template_id IS NULL)', 'templates.template_type = ?', 'templates.template_target = ?'];
$data = [$entities, 'OFFICE', 'attachments'];
$queryParams = $request->getQueryParams();
if (!empty($queryParams['attachmentType'])) {
$where[] = 'templates.template_attachment_type in (?)';
$data[] = explode(',', $queryParams['attachmentType']);
}
$templates = TemplateModel::getWithAssociation([
'select' => ['DISTINCT(templates.template_id)', 'templates.template_label', 'templates.template_file_name', 'templates.template_path', 'templates.template_attachment_type'],
'where' => $where,
'data' => $data,
'orderBy' => ['templates.template_label']
]);
$docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]);
foreach ($templates as $key => $template) {
$explodeFile = explode('.', $template['template_file_name']);
$ext = $explodeFile[count($explodeFile) - 1];
$exists = is_file($docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $template['template_path']) . $template['template_file_name']);
$templates[$key] = [
'id' => $template['template_id'],
'label' => $template['template_label'],
'extension' => $ext,
'exists' => $exists,
'attachmentType' => $template['template_attachment_type']
];
}
return $response->withJson(['templates' => $templates]);
}
private static function checkData(array $aArgs) private static function checkData(array $aArgs)
{ {
ValidatorModel::notEmpty($aArgs, ['data']); ValidatorModel::notEmpty($aArgs, ['data']);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment