From 4c4c2da9e9ae20a362fbf6442c8ea63c6d958bd8 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Fri, 27 Dec 2019 12:08:00 +0100 Subject: [PATCH] FEAT #12428 TIME 0:15 fixed for v1 --- .../controllers/SummarySheetController.php | 77 ++++++++++++++----- 1 file changed, 59 insertions(+), 18 deletions(-) diff --git a/src/app/resource/controllers/SummarySheetController.php b/src/app/resource/controllers/SummarySheetController.php index a8a1a634434..0721758b895 100755 --- a/src/app/resource/controllers/SummarySheetController.php +++ b/src/app/resource/controllers/SummarySheetController.php @@ -145,19 +145,18 @@ class SummarySheetController 'orderBy' => [$order] ]); -// $pdf = new Fpdi('P', 'pt'); -// $pdf->setPrintHeader(false); - $resourcesIds = array_column($resources, 'res_id'); // Data for resources $data = SummarySheetController::prepareData(['units' => $units, 'resourcesIds' => $resourcesIds]); foreach ($resources as $resource) { - SummarySheetController::createSummarySheet($pdf, ['resource' => $resource, 'units' => $units, - 'login' => $GLOBALS['userId'], - 'data' => $data, - 'fieldsIdentifier' => $fieldsIdentifier]); + SummarySheetController::createSummarySheet($pdf, [ + 'resource' => $resource, 'units' => $units, + 'login' => $GLOBALS['userId'], + 'data' => $data, + 'fieldsIdentifier' => $fieldsIdentifier + ]); } } @@ -226,6 +225,14 @@ class SummarySheetController ]); $allResourcesInBasket = array_column($rawResourcesInBasket, 'res_id'); + $resourcesByModelIds = DatabaseModel::select([ + 'select' => ["string_agg(cast(res_id as text), ',') as res_ids", 'model_id'], + 'table' => ['res_letterbox'], + 'where' => ['res_id in (?)'], + 'data' => [$allResourcesInBasket], + 'groupBy' => ['model_id'] + ]); + $order = 'CASE res_view_letterbox.res_id '; foreach ($resourcesData as $key => $resId) { if (!in_array($resId, $allResourcesInBasket)) { @@ -252,23 +259,57 @@ class SummarySheetController 'destination' ]; - $resources = ResModel::getOnView([ - 'select' => $select, - 'where' => ['res_view_letterbox.res_id in (?)'], - 'data' => [$resourcesData], - 'orderBy' => [$order] - ]); + $possibleFields = [ + 'documentDate' => 'doc_date', + 'arrivalDate' => 'admission_date', + 'initiator' => 'initiator', + 'priority' => 'priority', + 'processLimitDate' => 'process_limit_date', + 'destination' => 'destination' + ]; + $pdf = new Fpdi('P', 'pt'); $pdf->setPrintHeader(false); - $resourcesIds = array_column($resources, 'res_id'); + foreach ($resourcesByModelIds as $resourcesByModelId) { + $resourcesIdsByModel = $resourcesByModelId['res_ids']; + $resourcesIdsByModel = explode(',', $resourcesIdsByModel); - // Data for resources - $data = SummarySheetController::prepareData(['units' => $units, 'resourcesIds' => $resourcesIds]); + $indexingFields = IndexingModelFieldModel::get([ + 'select' => ['identifier', 'unit'], + 'where' => ['model_id = ?'], + 'data' => [$resourcesByModelId['model_id']] + ]); + $fieldsIdentifier = array_column($indexingFields, 'identifier'); - foreach ($resources as $resource) { - SummarySheetController::createSummarySheet($pdf, ['resource' => $resource, 'units' => $units, 'login' => $GLOBALS['userId'], 'data' => $data]); + foreach ($possibleFields as $key => $possibleField) { + if (!in_array($key, $fieldsIdentifier)) { + unset($select[$possibleField]); + } + } + + $resources = ResModel::getOnView([ + 'select' => $select, + 'where' => ['res_view_letterbox.res_id in (?)'], + 'data' => [$resourcesIdsByModel], + 'orderBy' => [$order] + ]); + + $resourcesIds = array_column($resources, 'res_id'); + + // Data for resources + $data = SummarySheetController::prepareData(['units' => $units, 'resourcesIds' => $resourcesIds]); + + foreach ($resources as $resource) { + SummarySheetController::createSummarySheet($pdf, [ + 'resource' => $resource, + 'units' => $units, + 'login' => $GLOBALS['userId'], + 'data' => $data, + 'fieldsIdentifier' => $fieldsIdentifier + ]); + } } $fileContent = $pdf->Output('', 'S'); -- GitLab