diff --git a/appinfo/routes.php b/appinfo/routes.php index 265e3845a618be9e75f18f4f4f5e77b054357f28..af8b224e3202c5cce0024cf1505aedaa820729f0 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 cb39291017dd5facccf77bd002c692fdc89fe8ce..bcc68e6ea6dc3d7fa6aa2147faa71a676c79d609 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 cfdcacc013004edca71f3b6fcc6c351febbba7cc..dc62598d40bc052a2053c81d3181667e401c2a81 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 638c986ec685d2fe2af242981f21c2b765b25bd9..e23475a89174e47566642deb13a6b66efaa9b319 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">