From 573a937a3d2c0afdaef984b6e835e63585205165 Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Wed, 30 Aug 2017 18:07:06 +0200 Subject: [PATCH] FEAT #5836 add MVC history batch --- .../administration-routing.module.js | 2 + .../administration-routing.module.ts | 2 + .../administration/administration.module.js | 2 + .../administration/administration.module.ts | 2 + .../js/angular/lang/lang-fr.js | 100 +++++++++-------- .../js/angular/lang/lang-fr.ts | 102 ++++++++++-------- apps/maarch_entreprise/js/angularFunctions.js | 1 + apps/maarch_entreprise/xml/services.xml | 3 +- core/Controllers/HistoryController.php | 15 +++ core/Models/HistoryModelAbstract.php | 33 ++++++ rest/index.php | 3 + 11 files changed, 170 insertions(+), 95 deletions(-) diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js index 7be420f6ef1..d951ab9d25a 100755 --- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js +++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js @@ -21,6 +21,7 @@ var priorities_administration_component_1 = require("./priorities-administration var priority_administration_component_1 = require("./priority-administration.component"); var reports_administration_component_1 = require("./reports-administration.component"); var history_administration_component_1 = require("./history-administration.component"); +var historyBatch_administration_component_1 = require("./historyBatch-administration.component"); var AdministrationRoutingModule = (function () { function AdministrationRoutingModule() { } @@ -48,6 +49,7 @@ AdministrationRoutingModule = __decorate([ { path: 'administration/actions/new', component: action_administration_component_1.ActionAdministrationComponent }, { path: 'administration/actions/:id', component: action_administration_component_1.ActionAdministrationComponent }, { path: 'administration/history', component: history_administration_component_1.HistoryAdministrationComponent }, + { path: 'administration/historyBatch', component: historyBatch_administration_component_1.HistoryBatchAdministrationComponent }, ]), ], exports: [ diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts index e0a6e891206..7bfd72bcbc9 100755 --- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts @@ -14,6 +14,7 @@ import { PrioritiesAdministrationComponent } from './priorities-administratio import { PriorityAdministrationComponent } from './priority-administration.component'; import { ReportsAdministrationComponent } from './reports-administration.component'; import { HistoryAdministrationComponent } from './history-administration.component'; +import { HistoryBatchAdministrationComponent } from './historyBatch-administration.component'; @NgModule({ @@ -37,6 +38,7 @@ import { HistoryAdministrationComponent } from './history-administration.c { path: 'administration/actions/new', component: ActionAdministrationComponent }, { path: 'administration/actions/:id', component: ActionAdministrationComponent }, { path: 'administration/history', component: HistoryAdministrationComponent }, + { path: 'administration/historyBatch', component: HistoryBatchAdministrationComponent }, ]), ], exports: [ diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.js b/apps/maarch_entreprise/js/angular/app/administration/administration.module.js index 78b0101fa51..b5dbd70875b 100755 --- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.js +++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.js @@ -26,6 +26,7 @@ var priorities_administration_component_1 = require("./priorities-administration var priority_administration_component_1 = require("./priority-administration.component"); var reports_administration_component_1 = require("./reports-administration.component"); var history_administration_component_1 = require("./history-administration.component"); +var historyBatch_administration_component_1 = require("./historyBatch-administration.component"); var AdministrationModule = (function () { function AdministrationModule() { } @@ -55,6 +56,7 @@ AdministrationModule = __decorate([ priority_administration_component_1.PriorityAdministrationComponent, reports_administration_component_1.ReportsAdministrationComponent, history_administration_component_1.HistoryAdministrationComponent, + historyBatch_administration_component_1.HistoryBatchAdministrationComponent, users_administration_component_1.DataTablePipe ] }) diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts index 0bb19160eb8..0f69a994fc3 100755 --- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts @@ -20,6 +20,7 @@ import { PrioritiesAdministrationComponent } from './priorities-administratio import { PriorityAdministrationComponent } from './priority-administration.component'; import { ReportsAdministrationComponent } from './reports-administration.component'; import { HistoryAdministrationComponent } from './history-administration.component'; +import { HistoryBatchAdministrationComponent } from './historyBatch-administration.component'; @NgModule({ @@ -45,6 +46,7 @@ import { HistoryAdministrationComponent } from './history-administration.c PriorityAdministrationComponent, ReportsAdministrationComponent, HistoryAdministrationComponent, + HistoryBatchAdministrationComponent, DataTablePipe ] }) diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.js b/apps/maarch_entreprise/js/angular/lang/lang-fr.js index fcf21187164..008d7f257e0 100755 --- a/apps/maarch_entreprise/js/angular/lang/lang-fr.js +++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.js @@ -70,97 +70,103 @@ exports.LANG_FR = { search: "Chercher", filterBy: "Filtrer par", //Users - user: "Utilisateur", - users: "Utilisateur(s)", - userAdded: "Utilisateur ajouté", - userUpdated: "Utilisateur modifié", - userSuspended: "Utilisateur suspendu", - userAuthorized: "Utilisateur autorisé", - userDeleted: "Utilisateur supprimé", - pswReseted: "Mot de passe réinitialisé", - status: "Statut", - informations: "Informations", - firstname: "Prénom", - lastname: "Nom", + absOff: "Absence désactivé", + absOn: "Absence activé", + activateAbs: "Activer l'absence", + color: "Couleur", email: "Email", - phoneNumber: "Numéro de téléphone", - role: "Rôle", emailSignatures: "Signatures de mail", - sbSignatures: "Signatures de parapheur", - initials: "Initiales", + entities: "Entités", fingerprint: "Empreinte numérique", - color: "Couleur", - label: "Label", - processDelay: "Délai de traitement", - workingDays: "Jours travaillés", + firstname: "Prénom", folders: "Dossiers", groups: "Groupes", - entities: "Entités", + informations: "Informations", + initials: "Initiales", + label: "Label", + lastname: "Nom", + phoneNumber: "Numéro de téléphone", primaryEntity: "Entité Primaire", - secondaryEntity: "Entité Secondaire", + processDelay: "Délai de traitement", + pswReseted: "Mot de passe réinitialisé", resetPsw: "Réinitialiser le mot de passe", + role: "Rôle", + sbSignatures: "Signatures de parapheur", + secondaryEntity: "Entité Secondaire", signAdded: "Signature ajoutée", - signUpdated: "Signature modifiée", signDeleted: "Signature supprimée", - activateAbs: "Activer l'absence", - absOn: "Absence activé", - absOff: "Absence désactivé", + signUpdated: "Signature modifiée", + status: "Statut", + user: "Utilisateur", + userAdded: "Utilisateur ajouté", + userAuthorized: "Utilisateur autorisé", + userDeleted: "Utilisateur supprimé", + users: "Utilisateur(s)", + userSuspended: "Utilisateur suspendu", + userUpdated: "Utilisateur modifié", + workingDays: "Jours travaillés", //Group groupAdded: "Groupe ajouté", - groupUpdated: "Groupe modifié", groupDeleted: "Groupe supprimé", + groupUpdated: "Groupe modifié", //Entity entityAdded: "Entité ajouté", - entityUpdated: "Entité modifié", entityDeleted: "Entité supprimé", entityTooglePrimary: "Passage en entité primaire", + entityUpdated: "Entité modifié", //Actions + action: "Action", actionAdded: "Action ajoutée", - actionUpdated: "Action modifiée", - actionDeleted: "Action supprimée", actionCreation: "Création d'une action", - actionModification: "Modification de l'action", - action: "Action", + actionDeleted: "Action supprimée", actionHistory: "Tracer l'action", actionHistoryDesc: "Permet tracer cette action dans l'historique du document. Il est fortement recommandé de cocher cette option.", + actionModification: "Modification de l'action", actionModified: "Modification de l'action", actionPage: "Page de résultat de l'action", actions: "Action(s)", + actionUpdated: "Action modifiée", associatedStatus: "Statut associé", chooseCategoryAssociation: "Choisissez une ou plusieurs catégories associée", chooseCategoryAssociationHelp: "Si aucune catégorie sélectionnée alors l'action est valable pour toute les catégories", doNotModifyUnlessExpert: "Ne pas modifier cette section à moins de savoir ce que vous faites. Un mauvais paramètrage peut entrainer des dysfonctionnements de l'application!", infosActions: "Vous devez choisir au moins un statut et / ou un script.", isFolderAction: "Action de dossier", - isSytemAction: "Action système", isFolderActionDesc: "Permet d'utiliser cette action dans une bannette de dossier", + isSytemAction: "Action système", keyword: "Mot clé", newAction: "Nouvelle action", - //Parametre + //Parameter + date: "Date", + integer: "Entier", parameterAdded: "Paramètre ajouté", - parameterUpdated: "Paramètre modifié", - parameterDeleted: "Paramètre supprimé", parameterCreation: "Création d'un paramètre", + parameterDeleted: "Paramètre supprimé", parameterModification: "Modification du paramètre", parameters: "Paramètre(s)", - type: "Type", + parameterUpdated: "Paramètre modifié", string: "Chaine de caratère", - integer: "Entier", - date: "Date", + type: "Type", //Status - statusCreation: "Création d'un statut", - statusModification: "Modification du statut", - statuses: "Statut(s)", - imgRelated: "Image associée", - canBeSearched: "Recherche", canBeModified: "Modification des index", + canBeSearched: "Recherche", + imgRelated: "Image associée", isFolderStatus: "Statut de dossier", statusAdded: "Statut ajouté", - statusUpdated: "Statut mis à jour", + statusCreation: "Création d'un statut", statusDeleted: "Statut supprimé", + statuses: "Statut(s)", + statusModification: "Modification du statut", + statusUpdated: "Statut mis à jour", //History - history: "Historique(s)", + dataOfMonth: "Données du mois", entries: "entrée(s)", event: "Événement", - dataOfMonth: "Données du mois" + history: "Historique", + ip: "Adresse IP", + //HistoryBatch + historyBatch: "Historique des batchs", + totalProcessed: "Élément(s) analysé(s)", + totalErrors: "Élément(s) en erreur", + module: "Module" }; diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts index 503c53c6943..44889050a6c 100755 --- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts +++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts @@ -73,105 +73,113 @@ export const LANG_FR = { filterBy: "Filtrer par", //Users - user: "Utilisateur", - users: "Utilisateur(s)", - userAdded: "Utilisateur ajouté", - userUpdated: "Utilisateur modifié", - userSuspended: "Utilisateur suspendu", - userAuthorized: "Utilisateur autorisé", - userDeleted: "Utilisateur supprimé", - pswReseted: "Mot de passe réinitialisé", - status: "Statut", - informations: "Informations", - firstname: "Prénom", - lastname: "Nom", + absOff: "Absence désactivé", + absOn: "Absence activé", + activateAbs: "Activer l'absence", + color: "Couleur", email: "Email", - phoneNumber: "Numéro de téléphone", - role: "Rôle", emailSignatures: "Signatures de mail", - sbSignatures: "Signatures de parapheur", - initials: "Initiales", + entities: "Entités", fingerprint: "Empreinte numérique", - color: "Couleur", - label: "Label", - processDelay: "Délai de traitement", - workingDays: "Jours travaillés", + firstname: "Prénom", folders: "Dossiers", groups: "Groupes", - entities: "Entités", + informations: "Informations", + initials: "Initiales", + label: "Label", + lastname: "Nom", + phoneNumber: "Numéro de téléphone", primaryEntity: "Entité Primaire", - secondaryEntity: "Entité Secondaire", + processDelay: "Délai de traitement", + pswReseted: "Mot de passe réinitialisé", resetPsw: "Réinitialiser le mot de passe", + role: "Rôle", + sbSignatures: "Signatures de parapheur", + secondaryEntity: "Entité Secondaire", signAdded: "Signature ajoutée", - signUpdated: "Signature modifiée", signDeleted: "Signature supprimée", - activateAbs: "Activer l'absence", - absOn: "Absence activé", - absOff: "Absence désactivé", + signUpdated: "Signature modifiée", + status: "Statut", + user: "Utilisateur", + userAdded: "Utilisateur ajouté", + userAuthorized: "Utilisateur autorisé", + userDeleted: "Utilisateur supprimé", + users: "Utilisateur(s)", + userSuspended: "Utilisateur suspendu", + userUpdated: "Utilisateur modifié", + workingDays: "Jours travaillés", //Group groupAdded: "Groupe ajouté", - groupUpdated: "Groupe modifié", groupDeleted: "Groupe supprimé", + groupUpdated: "Groupe modifié", //Entity entityAdded: "Entité ajouté", - entityUpdated: "Entité modifié", entityDeleted: "Entité supprimé", entityTooglePrimary: "Passage en entité primaire", + entityUpdated: "Entité modifié", //Actions + action: "Action", actionAdded: "Action ajoutée", - actionUpdated: "Action modifiée", - actionDeleted: "Action supprimée", actionCreation: "Création d'une action", - actionModification: "Modification de l'action", - action: "Action", + actionDeleted: "Action supprimée", actionHistory: "Tracer l'action", actionHistoryDesc: "Permet tracer cette action dans l'historique du document. Il est fortement recommandé de cocher cette option.", + actionModification: "Modification de l'action", actionModified: "Modification de l'action", actionPage: "Page de résultat de l'action", actions: "Action(s)", + actionUpdated: "Action modifiée", associatedStatus: "Statut associé", chooseCategoryAssociation: "Choisissez une ou plusieurs catégories associée", chooseCategoryAssociationHelp: "Si aucune catégorie sélectionnée alors l'action est valable pour toute les catégories", doNotModifyUnlessExpert: "Ne pas modifier cette section à moins de savoir ce que vous faites. Un mauvais paramètrage peut entrainer des dysfonctionnements de l'application!", infosActions: "Vous devez choisir au moins un statut et / ou un script.", isFolderAction: "Action de dossier", - isSytemAction: "Action système", isFolderActionDesc: "Permet d'utiliser cette action dans une bannette de dossier", + isSytemAction: "Action système", keyword: "Mot clé", newAction: "Nouvelle action", - //Parametre + //Parameter + date:"Date", + integer:"Entier", parameterAdded: "Paramètre ajouté", - parameterUpdated: "Paramètre modifié", - parameterDeleted: "Paramètre supprimé", parameterCreation: "Création d'un paramètre", + parameterDeleted: "Paramètre supprimé", parameterModification: "Modification du paramètre", parameters: "Paramètre(s)", - type:"Type", + parameterUpdated: "Paramètre modifié", string:"Chaine de caratère", - integer:"Entier", - date:"Date", + type:"Type", //Status - statusCreation: "Création d'un statut", - statusModification: "Modification du statut", - statuses: "Statut(s)", - imgRelated: "Image associée", - canBeSearched: "Recherche", canBeModified: "Modification des index", + canBeSearched: "Recherche", + imgRelated: "Image associée", isFolderStatus: "Statut de dossier", statusAdded: "Statut ajouté", - statusUpdated: "Statut mis à jour", + statusCreation: "Création d'un statut", statusDeleted: "Statut supprimé", + statuses: "Statut(s)", + statusModification: "Modification du statut", + statusUpdated: "Statut mis à jour", //History - history: "Historique(s)", + dataOfMonth: "Données du mois", entries: "entrée(s)", event: "Événement", - dataOfMonth: "Données du mois" + history: "Historique", + ip: "Adresse IP", + + //HistoryBatch + historyBatch: "Historique des batchs", + totalProcessed: "Élément(s) analysé(s)", + totalErrors: "Élément(s) en erreur", + module: "Module" + }; \ No newline at end of file diff --git a/apps/maarch_entreprise/js/angularFunctions.js b/apps/maarch_entreprise/js/angularFunctions.js index eb4e12574c4..f5da0fbb7bc 100755 --- a/apps/maarch_entreprise/js/angularFunctions.js +++ b/apps/maarch_entreprise/js/angularFunctions.js @@ -10,6 +10,7 @@ function triggerAngular(prodmode, locationToGo) { 'actions-administration', 'action-administration', 'history-administration', + 'historyBatch-administration', 'profile', 'signature-book', 'parameter-administration', diff --git a/apps/maarch_entreprise/xml/services.xml b/apps/maarch_entreprise/xml/services.xml index faa280989f8..4f9c63bb158 100755 --- a/apps/maarch_entreprise/xml/services.xml +++ b/apps/maarch_entreprise/xml/services.xml @@ -78,11 +78,12 @@ <id>view_history_batch</id> <name>_VIEW_HISTORY_BATCH</name> <comment>_VIEW_HISTORY_BATCH_DESC</comment> - <servicepage>index.php?page=history_batch&admin=history_batch</servicepage> + <servicepage>/administration/historyBatch</servicepage> <servicetype>admin</servicetype> <system_service>false</system_service> <style>fa fa-history</style> <enabled>true</enabled> + <angular>true</angular> </SERVICE> <!--<SERVICE> <id>xml_param_services</id> diff --git a/core/Controllers/HistoryController.php b/core/Controllers/HistoryController.php index 67d71e74d99..eec4dd47aac 100755 --- a/core/Controllers/HistoryController.php +++ b/core/Controllers/HistoryController.php @@ -262,4 +262,19 @@ class HistoryController return $response->withJson($return); } + + public function getBatchForAdministration(RequestInterface $request, ResponseInterface $response, $aArgs) + { + if (!ServiceModel::hasService(['id' => 'view_history_batch', 'userId' => $_SESSION['user']['UserId'], 'location' => 'apps', 'type' => 'admin'])) { + return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); + } + $return = []; + $historyList = HistoryModel::getHistoryBatchList(['event_date' => $aArgs['date']]); + $historyListFilters['modules'] = HistoryModel::getBatchFilter(['select' => 'module_name','event_date' => $aArgs['date']]); + + $return['filters'] = $historyListFilters; + $return['historyList'] = $historyList; + + return $response->withJson($return); + } } diff --git a/core/Models/HistoryModelAbstract.php b/core/Models/HistoryModelAbstract.php index 690a0f483e8..a973d6f203f 100755 --- a/core/Models/HistoryModelAbstract.php +++ b/core/Models/HistoryModelAbstract.php @@ -132,6 +132,22 @@ class HistoryModelAbstract return $aReturn; } + public static function getHistoryBatchList(array $aArgs = []) + { + ValidatorModel::notEmpty($aArgs, ['event_date']); + + $aReturn = DatabaseModel::select( + [ + 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'table' => ['history_batch'], + 'where' => ["event_date >= date '".$aArgs['event_date']."'","event_date < date '".$aArgs['event_date']."' + interval '1 month'"], + 'order_by' => ['event_date DESC'] + ] + ); + + return $aReturn; + } + public static function getHistoryByUserId(array $aArgs = []) { ValidatorModel::notEmpty($aArgs, ['userId']); @@ -166,4 +182,21 @@ class HistoryModelAbstract return $aReturn; } + + public static function getBatchFilter(array $aArgs = []) + { + ValidatorModel::notEmpty($aArgs, ['select','event_date']); + ValidatorModel::stringType($aArgs, ['select']); + + $aReturn = DatabaseModel::select( + [ + 'select' => ['DISTINCT('.$aArgs['select'].')'], + 'table' => ['history_batch'], + 'where' => ["event_date >= date '".$aArgs['event_date']."'","event_date < date '".$aArgs['event_date']."' + interval '1 month'"], + 'order_by' => [$aArgs['select'].' ASC'] + ] + ); + + return $aReturn; + } } diff --git a/rest/index.php b/rest/index.php index caf6c8282ce..e1d88b06003 100755 --- a/rest/index.php +++ b/rest/index.php @@ -207,6 +207,9 @@ $app->delete('/priorities/{id}', \Core\Controllers\PriorityController::class . ' //History $app->get('/administration/history/eventDate/{date}', \Core\Controllers\HistoryController::class . ':getForAdministration'); +//HistoryBatch +$app->get('/administration/historyBatch/eventDate/{date}', \Core\Controllers\HistoryController::class . ':getBatchForAdministration'); + //actions $app->get('/administration/actions', \Core\Controllers\ActionsController::class . ':getForAdministration'); -- GitLab