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 7be420f6ef17b5fe887fa46de60263d556caf756..d951ab9d25ae42800aec7c2466048a6b33369e5f 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 e0a6e89120633f412bfc84be9e134be5dfa2706b..7bfd72bcbc9493fd1ad5f33b1491e07eddb5d602 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 78b0101fa518965536624ad0bb8b2de08897cdb3..b5dbd70875b547f862af519ab34b7347c2e0bdfb 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 0bb19160eb84531560cbd1bea61dde3f4a85810d..0f69a994fc30e84d1f1695ed89ce35f9b55d8e46 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 fcf21187164d95ee4f6d43bb79f402eb73d6c6f4..008d7f257e083862d5395e4c520ceb2d69b13e05 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 503c53c694337abb5147485bf5f39e570952713f..44889050a6ca795446fb0600537c1b81e5592053 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 eb4e12574c462aae03ac84e6f139aabb87bb08b6..f5da0fbb7bc586257891431c3f744388dfc3a15f 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 faa280989f81a5eeee4e8add3adfefbdef46cbf8..4f9c63bb158c1e8317f8bbfc70f48dc9d01fafd2 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 67d71e74d999e31746ada305527c770929e6b5f2..eec4dd47aac0d5b77e7b955217ea23e091db2dbb 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 690a0f483e8f78ef76145354d68434128362b851..a973d6f203f8034ebc669126058c7152130cd301 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 caf6c8282ce8f3840048b37041b199fb5d96f4be..e1d88b06003b041e4242f46b68618acf13873523 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');