SMMP/build/api/module/historyDefault.php

206 lines
4.6 KiB
PHP
Executable File

<?php
namespace api\module;
use \database\core\DatabaseDriver;
use \manager\sessionManager;
use \error\core\Error;
use \error\core\Err;
use \database\core\Repo;
class historyDefault{
public function __construct(){}
public function __destruct(){}
/* CREATION D'UNE NOUVELLE ENTREE DANS LA BDD
*
* @id_user<int> UID de l'utilisateur
* @id_machine<int> UID la machine
* @id_action<int> UID de l'action
* @timestamp<int> timestamp de l'action
*
* @return status<Boolean> Retourne si oui ou non, tout s'est bien passe
*
*/
public function create($params){
extract($params);
/* [1] Creation de l'utilisateur
=========================================================*/
$create_entry = new Repo('history/create', [
$id_user,
$id_machine,
$id_action,
$timestamp
]);
$id_entry = $create_entry->answer();
// Si une erreur est retournee, on retourne une erreur
if( $id_entry === false )
return ['error' => new Error(Err::ModuleError)];
/* [2] Gestion du retour
=========================================================*/
return [
'id_history' => $id_entry
];
}
/* RENVOIE UN UTILISATEUR EN FONCTION D'UN MOT CLE
*
* @keywords<String> Element de recherche
*
* @return users<Array> Retourne la liste des utilisateurs trouves
*
*/
public function search($params){
extract($params);
// On recupere les donnees
$user = new Repo('history/search', [
$_SESSION['WAREHOUSE']['id'],
$keywords
]);
return [ 'history' => $user->answer() ];
}
/* RENVOIE LA LISTE EXHAUSTIVE DES ACCES
*
* @return history<Array> Liste des entrées de l'historique
*
*/
public function getAll(){
// On recupere les donnees
$entries = new Repo('history/getAll', [ $_SESSION['WAREHOUSE']['id'] ]);
return [ 'history' => $entries->answer() ];
}
/* SUPPRIME UNE ENTREE
*
* @id_history<int> UID de l'entree en question
*
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
*
*/
public function delete($params){
extract($params);
/* [1] On supprime l'utilisateur
=========================================================*/
$del_entry = new Repo('history/delete', [
$_SESSION['WAREHOUSE']['id'],
$id_history
]);
$deleted_entry = $del_entry->answer();
return [ 'status' => $deleted_entry ];
}
/* ARCHIVE L'HISTORIQUE D'UN ENTREPOT
*
* @return archive<File> Fichier de l'archive (.csv format)
*
*/
public function archive($params){
extract($params);
/* [1] Récupération des logs
=========================================================*/
/* (1) Requête */
$logs = new Repo('history/getAll', [$_SESSION['WAREHOUSE']['id']]);
/* (2) Gestion erreur */
if( $logs->error->get() != Err::Success )
return [ 'error' => $logs->error ];
/* [2] Création du contenu fichier
=========================================================*/
$BODY = "TIMESTAMP,MACHINE,UTILISATEUR,ACTION\n";
foreach($logs->answer() as $log)
$BODY .= $log['timestamp'].','.$log['machine_name'].','.$log['user_name'].','.$log['action_name']."\n";
/* [3] Renvoi du fichier
=========================================================*/
return [
'headers' => [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment; filename=archive-'.date('dmY').'.csv'
],
'body' => $BODY
];
}
/* (x) Return the machine history for an history entry
*
* @id_entry<id> UID of the history entry
*
* @return timeline<array> Machine timeline data
*
---------------------------------------------------------*/
public function get_timeline($params){
extract($params);
/* (1) Get history entry data
---------------------------------------------------------*/
/* (1) Request */
$entry = new Repo('history/getById', [$id_entry]);
/* (2) Get response */
$entry = $entry->answer();
/* (3) Manage error */
if( !is_array($entry) )
return ['error' => new Error(Err::RepoError)];
/* (2) Get history for machine
---------------------------------------------------------*/
/* (1) Request */
$timeline = new Repo('history/getByIdMachine', [
$_SESSION['WAREHOUSE']['id'],
$entry['id_machine']
]);
/* (2) Get response */
$timeline = $timeline->answer();
/* (3) Manage error */
if( $timeline === false )
return ['error' => new Error(Err::RepoError)];
/* (3) Return data
---------------------------------------------------------*/
return [ 'timeline' => $timeline ];
}
}
?>