From a4643e095fcd3d4381c43a04ae05e5f273123c0b Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Fri, 1 Feb 2019 15:40:34 +0100 Subject: [PATCH] FEAT #9082 All resources for summary sheet --- .../controllers/SummarySheetController.php | 57 ++++++++++++------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/src/app/resource/controllers/SummarySheetController.php b/src/app/resource/controllers/SummarySheetController.php index 626bc8944ba..a69d5ab9bb3 100644 --- a/src/app/resource/controllers/SummarySheetController.php +++ b/src/app/resource/controllers/SummarySheetController.php @@ -27,6 +27,7 @@ use Resource\models\ResourceListModel; use setasign\Fpdi\Tcpdf\Fpdi; use Slim\Http\Request; use Slim\Http\Response; +use SrcCore\controllers\PreparedClauseController; use SrcCore\models\CoreConfigModel; use SrcCore\models\TextFormatModel; use SrcCore\models\ValidatorModel; @@ -45,27 +46,42 @@ class SummarySheetController } $queryParamsData = $request->getQueryParams(); - /*$queryParamsData['units'] = base64_encode(json_encode([ - ['label' => 'Informations', 'unit' => 'primaryInformations'], - ['label' => 'Informations Secondaires', 'unit' => 'secondaryInformations'], - ['label' => 'Liste de diffusion', 'unit' => 'diffusionList'], - ['label' => 'Ptit avis les potos.', 'unit' => 'freeField'], - ['label' => 'Annotation(s)', 'unit' => 'notes'], - ['label' => 'Circuit de visa', 'unit' => 'visaWorkflow'], - ['label' => 'Circuit d\'avis', 'unit' => 'opinionWorkflow'], - ['label' => 'Commentaires', 'unit' => 'freeField'], - ['unit' => 'qrcode'], - ]));*/ - +// $queryParamsData['units'] = base64_encode(json_encode([ +// ['label' => 'Informations', 'unit' => 'primaryInformations'], +// ['label' => 'Informations Secondaires', 'unit' => 'secondaryInformations'], +// ['label' => 'Liste de diffusion', 'unit' => 'diffusionList'], +// ['label' => 'Ptit avis les potos.', 'unit' => 'freeField'], +// ['label' => 'Annotation(s)', 'unit' => 'notes'], +// ['label' => 'Circuit de visa', 'unit' => 'visaWorkflow'], +// ['label' => 'Circuit d\'avis', 'unit' => 'opinionWorkflow'], +// ['label' => 'Commentaires', 'unit' => 'freeField'], +// ['unit' => 'qrcode'], +// ])); +// $queryParamsData['resources'] = [237, 352]; + $units = empty($queryParamsData['units']) ? [] : (array)json_decode(base64_decode($queryParamsData['units'])); $basket = BasketModel::getById(['id' => $aArgs['basketId'], 'select' => ['basket_clause', 'basket_res_order', 'basket_name']]); $user = UserModel::getById(['id' => $aArgs['userId'], 'select' => ['user_id']]); - $allQueryData = ResourceListController::getResourcesListQueryData(['data' => $queryParamsData, 'basketClause' => $basket['basket_clause'], 'login' => $user['user_id']]); - if (!empty($allQueryData['order'])) { - $queryParamsData['order'] = $allQueryData['order']; + $whereClause = PreparedClauseController::getPreparedClause(['clause' => $basket['basket_clause'], 'login' => $user['user_id']]); + $rawResourcesInBasket = ResModel::getOnView([ + 'select' => ['res_id'], + 'where' => [$whereClause] + ]); + $allResourcesInBasket = []; + foreach ($rawResourcesInBasket as $resource) { + $allResourcesInBasket[] = $resource['res_id']; + } + + $order = 'CASE res_view_letterbox.res_id '; + foreach ($queryParamsData['resources'] as $key => $resId) { + if (!in_array($resId, $allResourcesInBasket)) { + return $response->withStatus(403)->withJson(['errors' => 'Resources out of perimeter']); + } + $order .= "WHEN {$resId} THEN {$key} "; } + $order .= 'END'; $select = ['res_id', 'subject', 'alt_identifier']; foreach ($units as $unit) { @@ -81,13 +97,12 @@ class SummarySheetController $select = array_merge($select, $informations); } } - $resources = ResourceListModel::getOnView([ + + $resources = ResModel::getOnView([ 'select' => $select, - 'table' => $allQueryData['table'], - 'leftJoin' => $allQueryData['leftJoin'], - 'where' => $allQueryData['where'], - 'data' => $allQueryData['queryData'], - 'orderBy' => empty($queryParamsData['order']) ? [$basket['basket_res_order']] : [$queryParamsData['order']] + 'where' => ['res_view_letterbox.res_id in (?)'], + 'data' => [$queryParamsData['resources']], + 'orderBy' => [$order] ]); $pdf = new Fpdi('P', 'pt'); -- GitLab