From d226df9afb3e020a94dea2acfd85e530d700a106 Mon Sep 17 00:00:00 2001 From: VESSILLER <lvessiller@open-dsi.fr> Date: Thu, 4 Jun 2020 14:56:50 +0200 Subject: [PATCH] NEW ajout export CSV et actualiser les etats des archives --- appinfo/routes.php | 1 + lib/Controller/PageController.php | 93 ++++++++++++++++++++++++++++++ templates/content/agent_list.php | 6 +- templates/content/archive_list.php | 8 ++- 4 files changed, 105 insertions(+), 3 deletions(-) diff --git a/appinfo/routes.php b/appinfo/routes.php index 265e384..af8b224 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -19,6 +19,7 @@ return [ ['name' => 'page#agent_csv', 'url' => '/agent_csv', 'verb' => 'GET'], ['name' => 'page#archive_list', 'url' => '/archive_list', 'verb' => 'GET'], ['name' => 'page#archive_action', 'url' => '/archive_action', 'verb' => 'POST'], + ['name' => 'page#archive_csv', 'url' => '/archive_csv', 'verb' => 'GET'], ['name' => 'page#user_list', 'url' => '/user_list', 'verb' => ['GET', 'POST']], ] ]; diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index cb39291..bcc68e6 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -318,6 +318,7 @@ class PageController extends Controller { return array( 'dematpayslipArchiveList' => $dematpayslipArchiveList, + 'exportDirUserPath' => $this->_exportDirUserPath, 'msgList' => $this->_msgList, 'paramList' => $paramList ); @@ -2468,6 +2469,98 @@ class PageController extends Controller { } } + /** + * Archive CSV + * + * @NoAdminRequired + * @NoCSRFRequired + * + * @return TemplateResponse + * @throws \Exception + */ + public function archiveCsv() { + // verifier l'utilisateur + if ($this->userId === $this->_dematpayslipConfigList['user_id']) { + $this->_initDematFolders(); + + $dematpayslipArchiveMapper = new DematpayslipArchiveMapper(\OC::$server->getDatabaseConnection()); + $dematpayslipArchiveList = $dematpayslipArchiveMapper->findAllArchived(-1); + + if (!empty($dematpayslipArchiveList)) { + $dateTimeNow = new \DateTime('now', \OC::$server->getDateTimeZone()->getTimeZone()); + $csvFilePath = $this->_exportDirUserPath . DIRECTORY_SEPARATOR . $dateTimeNow->format('Y-m-d_H-i-s') . '_archive'; + $csvFile = Filesystem::fopen($csvFilePath, 'w+'); + + if (!$csvFile) { + $errorMsg = $this->l->t('Ouverture du fichier CSV.'); + $this->_msgList['error'][] = $errorMsg; + } + + if (count($this->_msgList['error']) <= 0) { + $csvDelimiter = $this->_csvDelimiter; + $csvEnclosure = $this->_csvEnclosure; + + $csvFields = array(); + $csvFields[] = $this->l->t('Chemin'); + $csvFields[] = $this->l->t('Siret'); + $csvFields[] = $this->l->t('Matricule'); + $csvFields[] = $this->l->t('Nom'); + $csvFields[] = $this->l->t('Prénom'); + $csvFields[] = $this->l->t('Début'); + $csvFields[] = $this->l->t('Fin'); + $csvFields[] = $this->l->t('Edition'); + $csvFields[] = $this->l->t('Archive'); + $csvFields[] = $this->l->t('Dernière action'); + + $res = fputcsv($csvFile, $csvFields, $csvDelimiter, $csvEnclosure); + if (!$res) { + $errorMsg = $this->l->t('Ecriture des colonnes dans le fichier CSV.'); + $this->_msgList['error'][] = $errorMsg; + } + + if (count($this->_msgList['error']) <= 0) { + foreach ($dematpayslipArchiveList as $dematpayslipArchive) { + $csvFields = array(); + $csvFields[] = $dematpayslipArchive->getFilePath(); + $csvFields[] = $dematpayslipArchive->getSiret(); + $csvFields[] = $dematpayslipArchive->getMatricule(); + $csvFields[] = $dematpayslipArchive->getLastname(); + $csvFields[] = $dematpayslipArchive->getFirstname(); + $csvFields[] = $dematpayslipArchive->getStartDate(); + $csvFields[] = $dematpayslipArchive->getEndDate(); + $csvFields[] = $dematpayslipArchive->getEditionDate(); + $csvFields[] = $dematpayslipArchive->getPastellIdDocument(); + $csvFields[] = $dematpayslipArchive->getPastellLastAction(); + + $res = fputcsv($csvFile, $csvFields, $csvDelimiter, $csvEnclosure); + if (!$res) { + $errorMsg = $this->l->t('Ecriture de la ligne dans le fichier CSV.'); + $this->_msgList['error'][] = $errorMsg; + break; + } + } + } + + $res = fclose($csvFile); + if (!$res) { + $errorMsg = $this->l->t('Fermeture du fichier CSV.'); + $this->_msgList['error'][] = $errorMsg; + } + + if (count($this->_msgList['error']) <= 0) { + // rename (sync files) + $renamed = Filesystem::rename($csvFilePath, $csvFilePath . '.csv'); + $this->_msgList['success'][] = $this->l->t('La liste des archives a bien été exporté au format CSV.'); + } + } + } + + return new TemplateResponse('dematpayslip', 'archive_list', $this->_assignArchiveList()); + } else { + return $this->shares(); + } + } + /** * Liste des bulletins de paie * diff --git a/templates/content/agent_list.php b/templates/content/agent_list.php index cfdcacc..dc62598 100644 --- a/templates/content/agent_list.php +++ b/templates/content/agent_list.php @@ -43,11 +43,13 @@ ?> <div class="row" id="dematpayslip"> <div class="col-md-12 dematpayslip_block"> + <?php if (!empty($htmlAlert)) { ?> + <div id="dematpayslip_alert"><?php print $htmlAlert; ?></div> + <?php } ?> <h2><?php p($l->t('Liste des agents')); ?> <a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.agent_csv'); ?>" class="button" title="<?php p($l->t('Export CSV')); ?>"><?php p($l->t('CSV')); ?></a></h2> - <div id="dematpayslip_alert"><?php print $htmlAlert; ?></div> <div> - <a href="<?php echo \OC\URLGenerator::linkToRoute('files.view.index', ['dir' => $exportDirUserPath]); ?>" class="button" title="<?php p($l->t('Accéder aux exports CSV')); ?>"><?php p($l->t('Accéder aux exports CSV')); ?></a> + <a href="<?php echo \OC\URLGenerator::linkToRoute('files.view.index', ['dir' => $exportDirUserPath]); ?>" class="button" target="_blank" title="<?php p($l->t('Accéder aux exports CSV')); ?>"><?php p($l->t('Accéder aux exports CSV')); ?></a> </div> <br /> diff --git a/templates/content/archive_list.php b/templates/content/archive_list.php index 638c986..e23475a 100644 --- a/templates/content/archive_list.php +++ b/templates/content/archive_list.php @@ -1,6 +1,7 @@ <?php // assigned $dematpayslipArchiveList = (isset($_['dematpayslipArchiveList']) ? $_['dematpayslipArchiveList'] : array()); + $exportDirUserPath = (isset($_['exportDirUserPath']) ? $_['exportDirUserPath'] : ''); $msgList = (isset($_['msgList']) ? $_['msgList'] : array()); $paramList = (isset($_['paramList']) ? $_['paramList'] : array()); @@ -46,7 +47,12 @@ <?php if (!empty($htmlAlert)) { ?> <div id="dematpayslip_alert"><?php print $htmlAlert; ?></div> <?php } ?> - <h2><?php p($l->t('Liste des archives')); ?> </h2> + <h2><?php p($l->t('Liste des archives')); ?> <a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.archive_csv'); ?>" class="button" title="<?php p($l->t('Export CSV')); ?>"><?php p($l->t('CSV')); ?></a></h2> + <br /> + + <div> + <a href="<?php echo \OC\URLGenerator::linkToRoute('files.view.index', ['dir' => $exportDirUserPath]); ?>" class="button" target="_blank" title="<?php p($l->t('Accéder aux exports CSV')); ?>"><?php p($l->t('Accéder aux exports CSV')); ?></a> + </div> <br /> <form action="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.archive_action'); ?>" id="demmatpayslip_archive_action_form" name="demmatpayslip_archive_action_form" method="post"> -- GitLab