Skip to content

Commit

Permalink
Evarisk#3682 [LegalDisplay] add: graph on legal display
Browse files Browse the repository at this point in the history
  • Loading branch information
evarisk-charles committed Feb 9, 2024
1 parent 16a8bee commit 525e53a
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 53 deletions.
16 changes: 10 additions & 6 deletions class/digiriskdolibarrdashboard.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
require_once __DIR__ . '/digiriskdolibarrdocuments/riskassessmentdocument.class.php';
require_once __DIR__ . '/accident.class.php';
require_once __DIR__ . '/evaluator.class.php';
require_once __DIR__ . '/digiriskdolibarrdocuments/legaldisplay.class.php';
require_once __DIR__ . '/digiriskresources.class.php';
require_once __DIR__ . '/riskanalysis/risk.class.php';
require_once __DIR__ . '/../../saturne/class/task/saturnetask.class.php';
Expand Down Expand Up @@ -61,25 +62,28 @@ public function load_dashboard(array $moreParams = []): array
{
global $conf;

$loadRiskAssessmentDocument = array_key_exists('loadRiskAssessmentDocument', $moreParams) ? $moreParams['loadRiskAssessmentDocument'] : 1;
$loadAccident = array_key_exists('loadAccident', $moreParams) ? $moreParams['loadAccident'] : 1;
$loadEvaluator = array_key_exists('loadEvaluator', $moreParams) ? $moreParams['loadEvaluator'] : 1;
$loadDigiriskResources = array_key_exists('loadDigiriskResources', $moreParams) ? $moreParams['loadDigiriskResources'] : 1;
$loadRisk = array_key_exists('loadRisk', $moreParams) ? $moreParams['loadRisk'] : 1;
$loadTask = array_key_exists('loadTask', $moreParams) ? $moreParams['loadTask'] : 1;
$loadRiskAssessmentDocument = array_key_exists('loadRiskAssessmentDocument', $moreParams) ? $moreParams['loadRiskAssessmentDocument'] : 0;
$loadAccident = array_key_exists('loadAccident', $moreParams) ? $moreParams['loadAccident'] : 0;
$loadEvaluator = array_key_exists('loadEvaluator', $moreParams) ? $moreParams['loadEvaluator'] : 0;
$loadDigiriskResources = array_key_exists('loadDigiriskResources', $moreParams) ? $moreParams['loadDigiriskResources'] : 0;
$loadRisk = array_key_exists('loadRisk', $moreParams) ? $moreParams['loadRisk'] : 0;
$loadTask = array_key_exists('loadTask', $moreParams) ? $moreParams['loadTask'] : 0;
$loadLegalDisplay = array_key_exists('loadLegalDisplay', $moreParams) ? $moreParams['loadLegalDisplay'] : 0;

$riskAssessmentDocument = new RiskAssessmentDocument($this->db);
$accident = new Accident($this->db);
$evaluator = new Evaluator($this->db);
$digiriskResources = new DigiriskResources($this->db);
$risk = new Risk($this->db);
$legalDisplay = new LegalDisplay($this->db);
$digiriskTask = new SaturneTask($this->db);

$dashboardData['riskassessmentdocument'] = ($loadRiskAssessmentDocument) ? $riskAssessmentDocument->load_dashboard() : [];
$dashboardData['accident'] = ($loadAccident) ? $accident->load_dashboard() : [];
$dashboardData['evaluator'] = ($loadEvaluator) ? $evaluator->load_dashboard() : [];
$dashboardData['digiriskresources'] = ($loadDigiriskResources) ? $digiriskResources->load_dashboard() : [];
$dashboardData['risk'] = ($loadRisk) ? $risk->load_dashboard() : [];
$dashboardData['legaldisplay'] = ($loadLegalDisplay) ? $legalDisplay->load_dashboard() : [];
$dashboardData['task'] = ($loadTask) ? $digiriskTask->load_dashboard($conf->global->DIGIRISKDOLIBARR_DU_PROJECT) : [];

return $dashboardData;
Expand Down
97 changes: 95 additions & 2 deletions class/digiriskdolibarrdocuments/legaldisplay.class.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2021-2023 EVARISK <[email protected]>
/* Copyright (C) 2021-2024 EVARISK <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -23,6 +23,7 @@

// Load DigiriskDolibarr libraries
require_once __DIR__ . '/../digiriskdocuments.class.php';
require_once __DIR__ . '/../digiriskresources.class.php';

/**
* Class for LegalDisplay
Expand All @@ -39,6 +40,11 @@ class LegalDisplay extends DigiriskDocuments
*/
public $element = 'legaldisplay';

/**
* @var string String with name of icon for legaldisplay. Must be the part after the 'object_' into object_legaldisplay.png
*/
public $picto = 'fontawesome_fa-file_fas_#d35968';

/**
* Constructor.
*
Expand All @@ -50,7 +56,7 @@ public function __construct(DoliDB $db)
}

/**
* Function for JSON filling before saving in database
* Function for JSON filling before saving in database for documents
*
* @return false|string
* @throws Exception
Expand Down Expand Up @@ -234,4 +240,91 @@ public function getIDCCByCode($code) {
return '';
}
}

/**
* Load dashboard info
*
* @return array $dashboardData Return all dashboardData after load info
* @throws Exception
*/
public function load_dashboard(): array
{
$getLegalDisplayInfos = $this->getLegalDisplayInfos();

$dashboardData['graphs'] = [$getLegalDisplayInfos];

return $dashboardData;
}

/**
* Get legal display infos
*
* @return array $array Return legal display graph infos
* @throws Exception
*/
public function getLegalDisplayInfos(): array
{
global $langs;

// Graph Title parameters
$array['title'] = $langs->transnoentities('DocumentCompletionRate');
$array['picto'] = $this->picto;

// Graph parameters
$array['width'] = '100%';
$array['height'] = 300;
$array['type'] = 'pie';
$array['showlegend'] = 2;
$array['dataset'] = 1;

$legalDisplayGraphInfos = $this->getLegalDisplayNumber();
$array['labels'] = [
0 => [
'label' => price2num($legalDisplayGraphInfos['counter'] / $legalDisplayGraphInfos['maxNumber'] * 100, 'MT') . ' %',
'color' => '#0d8affcc'
],
1 => [
'label' => price2num(($legalDisplayGraphInfos['maxNumber'] - $legalDisplayGraphInfos['counter']) * 100 / $legalDisplayGraphInfos['maxNumber'], 'MT') . ' %',
'color' => '#6c6c6c66'
]
];

$array['data'] = [$legalDisplayGraphInfos['counter'], $legalDisplayGraphInfos['maxNumber'] - $legalDisplayGraphInfos['counter']];

return $array;
}

/**
* Get legal display numbers
*
* @return array $array Return counter and maxNumber
* @throws Exception
*/
public function getLegalDisplayNumber(): array
{
global $conf;

$resources = new DigiriskResources($this->db);

$counter = 0;
$securityResources = ['SAMU','Pompiers','Police','AllEmergencies','RightsDefender','PoisonControlCenter', 'Responsible', 'LabourDoctorSociety', 'LabourDoctorContact', 'LabourInspectorSociety', 'LabourInspectorContact'];
$securityConsts = ['DIGIRISKDOLIBARR_LOCATION_OF_DETAILED_INSTRUCTION', 'DIGIRISKDOLIBARR_SOCIETY_DESCRIPTION', 'DIGIRISKDOLIBARR_GENERAL_MEANS', 'DIGIRISKDOLIBARR_GENERAL_RULES', 'DIGIRISKDOLIBARR_FIRST_AID', 'DIGIRISKDOLIBARR_RULES_LOCATION', 'DIGIRISKDOLIBARR_DUER_LOCATION', 'DIGIRISKDOLIBARR_COLLECTIVE_AGREEMENT_LOCATION'];
$allLinks = $resources->fetchDigiriskResources();

$maxNumber = count($securityResources) + count($securityConsts);
foreach ($securityConsts as $securityConst) {
if (dol_strlen($conf->global->$securityConst) > 0) {
$counter += 1;
}
}
foreach ($securityResources as $securityResource) {
if (!empty($allLinks[$securityResource] && $allLinks[$securityResource]->id[0] > 0)) {
$counter += 1;
}
}

$array = ['counter' => $counter, 'maxNumber' => $maxNumber];

return $array;
}
}
9 changes: 9 additions & 0 deletions digiriskdolibarrindex.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,13 @@

$moreParams['specialModuleNameLowerCase'] = 'digirisk';

$moreParams = [
'loadRiskAssessmentDocument' => 1,
'loadAccident' => 1,
'loadEvaluator' => 1,
'loadDigiriskResources' => 1,
'loadRisk' => 1,
'loadTask' => 1,
];

require_once __DIR__ . '/../saturne/core/tpl/index/index_view.tpl.php';
1 change: 1 addition & 0 deletions langs/fr_FR/digiriskdolibarr.lang
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ CollectiveAgreement = Conventions collectives
CollectiveAgreementValue = Disponible sur le site du gouvernement :<br /><a href="https://www.service-public.fr/particuliers/vosdroits/F78" target="_blank">https://www.service-public.fr/particuliers/vosdroits/F78</a>
legaldisplay.odt = Affichage légal
legaldisplay_custom.odt = Affichage légal personnalisé
DocumentCompletionRate = Taux de remplissage du document

#
# InformationsSharing - Diffusion d'informations
Expand Down
6 changes: 5 additions & 1 deletion view/digiriskstandard/digiriskstandard_card.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,11 @@
print '<br>';

$moreParams = [
'loadAccident' => 0
'loadRiskAssessmentDocument' => 1,
'loadEvaluator' => 1,
'loadDigiriskResources' => 1,
'loadRisk' => 1,
'loadTask' => 1,
];

$dashboard->show_dashboard($moreParams);
Expand Down
90 changes: 46 additions & 44 deletions view/digiriskstandard/digiriskstandard_legaldisplay.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2021-2023 EVARISK <[email protected]>
/* Copyright (C) 2021-2024 EVARISK <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -16,9 +16,9 @@
*/

/**
* \file view/digiriskstandard/digiriskstandard_legaldisplay.php
* \ingroup digiriskdolibarr
* \brief Page to view legaldisplay
* \file view/digiriskstandard/digiriskstandard_legaldisplay.php
* \ingroup digiriskdolibarr
* \brief Page to view legaldisplay
*/

// Load DigiriskDolibarr environment
Expand All @@ -30,60 +30,64 @@
die('Include of digiriskdolibarr main fails');
}

require_once DOL_DOCUMENT_ROOT . '/core/lib/images.lib.php';
// Load Dolibarr libraries
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php';

// Load Saturne libraries
require_once __DIR__ . '/../../../saturne/class/saturneschedules.class.php';
require_once __DIR__ . '/../../../saturne/class/saturnedashboard.class.php';

// Load DigiriskDolibarr libraries
require_once __DIR__ . '/../../class/digiriskstandard.class.php';
require_once __DIR__ . '/../../class/digiriskresources.class.php';
require_once __DIR__ . '/../../class/digiriskdolibarrdocuments/legaldisplay.class.php';
require_once __DIR__ . '/../../lib/digiriskdolibarr_digiriskstandard.lib.php';
require_once __DIR__ . '/../../lib/digiriskdolibarr_function.lib.php';

require_once __DIR__ . '/../../../saturne/class/saturneschedules.class.php';

global $db, $conf, $langs, $user, $hookmanager;
global $db, $conf, $langs, $moduleNameLowerCase, $user, $hookmanager;

// Load translation files required by the page
saturne_load_langs(['other']);
saturne_load_langs();

// Get parameters
$action = GETPOST('action', 'aZ09');
$subaction = GETPOST('subaction', 'aZ09');

// Initialize technical objects
$object = new DigiriskStandard($db);
$document = new LegalDisplay($db);
$contact = new Contact($db);
$usertmp = new User($db);
$project = new Project($db);
$object = new DigiriskStandard($db);
$document = new LegalDisplay($db);
$usertmp = new User($db);
$contact = new Contact($db);
$project = new Project($db);
$dashboard = new SaturneDashboard($db, $moduleNameLowerCase);

$hookmanager->initHooks(array('digiriskelementlegaldisplay', 'digiriskstandardview', 'globalcard')); // Note that conf->hooks_modules contains array
$hookmanager->initHooks(['digiriskelementlegaldisplay', 'digiriskstandardview', 'globalcard']); // Note that conf->hooks_modules contains array

$object->fetch($conf->global->DIGIRISKDOLIBARR_ACTIVE_STANDARD);

$upload_dir = $conf->digiriskdolibarr->multidir_output[$conf->entity ?? 1];

// Security check - Protection if external user
$permissiontoread = $user->rights->digiriskdolibarr->digiriskstandard->read && $user->rights->digiriskdolibarr->legaldisplay->read;
$permissionToRead = $user->rights->digiriskdolibarr->digiriskstandard->read && $user->rights->digiriskdolibarr->legaldisplay->read;
$permissiontoadd = $user->rights->digiriskdolibarr->legaldisplay->write;
$permissiontodelete = $user->rights->digiriskdolibarr->legaldisplay->delete;
saturne_check_access($permissiontoread);
saturne_check_access($permissionToRead);

/*
* Actions
*/

$parameters = array();
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
$parameters = [];
$resHook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($resHook < 0) {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
}

if (empty($reshook)) {
$error = 0;
if (empty($resHook)) {
$previousRef = $object->ref;
$object->ref = '';

// Actions builddoc, forcebuilddoc, remove_file.
// Actions builddoc, forcebuilddoc, remove_file
require_once __DIR__ . '/../../../saturne/core/tpl/documents/documents_action.tpl.php';

// Action to generate pdf from odt file
Expand All @@ -99,51 +103,49 @@
$title = $langs->trans('LegalDisplay');
$helpUrl = 'FR:Module_Digirisk#Soci.C3.A9t.C3.A9.2FOrganisation';

digirisk_header($title, $helpUrl); ?>

<div id="cardContent" value="">

<?php
$res = $object->fetch_optionals();
digirisk_header($title, $helpUrl);

saturne_get_fiche_head($object, 'standardLegalDisplay', $title);

// Object card
// ------------------------------------------------------------
// Project
$morehtmlref = '<div class="refidno">';
$moreHtmlRef = '<div class="refidno">';
$project->fetch($conf->global->DIGIRISKDOLIBARR_DU_PROJECT);
$morehtmlref .= $langs->trans('Project') . ' : ' . getNomUrlProject($project, 1, 'blank', 1);
$morehtmlref .= '</div>';
$moreHtmlRef .= $langs->trans('Project') . ' : ' . getNomUrlProject($project, 1, 'blank', 1);
$moreHtmlRef .= '</div>';

$moduleNameLowerCase = 'mycompany';
saturne_banner_tab($object,'ref','none', 0, 'ref', 'ref', $morehtmlref, true);
saturne_banner_tab($object,'ref','none', 0, 'ref', 'ref', $moreHtmlRef, true);
$moduleNameLowerCase = 'digiriskdolibarr';

print '<a href="../../admin/securityconf.php" target="_blank">' . $langs->trans('ConfigureSecurityAndSocialData') . ' <i class="fas fa-external-link-alt"></i></a>';
print '<div class="valignmiddle"> <a href="../../admin/securityconf.php" target="_blank">' . $langs->trans('ConfigureSecurityAndSocialData') . ' <i class="fas fa-external-link-alt"></i></a></div>';
print '<hr>';
print '<div class="fichecenter">';
print '<table class="border centpercent tableforfield">' . "\n";
print '<div class="fichehalfleft">';
print '<table class="border centpercent tableforfield">';

//JSON Decode and show fields
require_once __DIR__ . '/../../core/tpl/digiriskdocuments/digiriskdolibarr_legaldisplayfields_view.tpl.php';

print '</table>';
print '</div>';
print '<div class="fichehalfright">';

$moreParams = ['loadLegalDisplay' => 1];
$dashboard->show_dashboard($moreParams);
print '</div>';
print '</div>';

print dol_get_fiche_end();

// Document Generation -- Génération des documents
$dirFiles = 'legaldisplay';
$filedir = $upload_dir . '/' . $dirFiles;
$urlsource = $_SERVER["PHP_SELF"];
$modulepart = 'digiriskdolibarr:LegalDisplay';

if ($permissiontoadd || $permissiontoread) {
$genallowed = 1;
}
$fileDir = $upload_dir . '/' . $dirFiles;
$urlSource = $_SERVER["PHP_SELF"];
$modulePart = 'digiriskdolibarr:LegalDisplay';

print saturne_show_documents($modulepart, $dirFiles, $filedir, $urlsource, 1,1, '', 1, 0, 0, 0, 0, '', 0, '', empty($soc->default_lang) ? '' : $soc->default_lang, $object);
print saturne_show_documents($modulePart, $dirFiles, $fileDir, $urlSource, $permissiontoadd, $permissiontodelete, '', 1, 0, 0, 0, 0, '', '', $langs->defaultlang, 0, $object);

// End of page
llxFooter();
Expand Down

0 comments on commit 525e53a

Please sign in to comment.