Start Point al 2026
This commit is contained in:
commit
8a76e1db3b
371 files changed
+160283
No files matched your search
@@ -0,0 +1,388 @@
|
||||
<?php namespace App\Controllers;
|
||||
|
||||
use App\Libraries\Crud;
|
||||
use App\Models\Issues_Model;
|
||||
use App\Models\Lavoratori_Model;
|
||||
|
||||
class Issues extends CRUDController {
|
||||
|
||||
// Tab: Issues = ['isIDissue', 'isTipologia', 'isStato', 'isIDlavoratore', 'isTesto', 'isCreatedAt', 'isUpdatedAt', 'isDeletedAt'];
|
||||
|
||||
protected $crud;
|
||||
|
||||
function __construct() {
|
||||
|
||||
$params = [
|
||||
'table' => 'Issues',
|
||||
'dev' => false,
|
||||
'fields' => $this->field_options(),
|
||||
'form_title_add' => 'Add Issue',
|
||||
'form_title_update' => 'Edit Issue',
|
||||
'form_submit' => 'Add',
|
||||
'table_title' => 'Pagina per la tabella Issues',
|
||||
'form_submit_update' => 'Update',
|
||||
'base' => '',
|
||||
'UpdatedAt' => 'isUpdatedAt',
|
||||
'DeletedAt' => 'isDeletedAt',
|
||||
];
|
||||
|
||||
$this->crud = new Crud($params, service('request'));
|
||||
}// __construct
|
||||
|
||||
|
||||
protected function field_options() {
|
||||
|
||||
$fields = [];
|
||||
$fields['isIDissue'] = ['label' => 'ID', 'helper' => 'Identificativo univoco del record nel database'];
|
||||
$fields['isTipologia'] = ['label' => 'Tipologia', 'helper' => 'Tipologia dell\'issue', 'required' => true];
|
||||
$fields['isStato'] = ['label' => 'Stato', 'helper' => 'Stato dell\'issue', 'required' => true];
|
||||
$fields['isIDlavoratore'] = [
|
||||
'label' => 'Lavoratore',
|
||||
'required' => true,
|
||||
'type' => 'dropdown',
|
||||
'helper' => 'Lavoratore che inserisce l\'issue',
|
||||
'relation' => [
|
||||
'table'=> 'Lavoratori',
|
||||
'primary_key' => 'lvIDlavoratore',
|
||||
'display' => ['lvNickname', 'lvNome', 'lvCognome'], //'display' => ['lvNickname'],
|
||||
'order_by' => 'lvNickname',
|
||||
'order' => 'ASC'
|
||||
]
|
||||
];
|
||||
$fields['isTesto'] = ['label' => 'Testo', 'helper' => 'Testo descrittivo della issue','required' => true];
|
||||
$fields['isCreatedAt'] = ['label' => 'Created At', 'helper' => 'Data di creazione del record relativo nel database', 'only_edit'=> true];
|
||||
$fields['isUpdatedAt'] = ['label' => 'Updated At', 'helper' => 'Timestamp dell\'ultimo aggiornamento del record nel database', 'type' => 'unset'];
|
||||
$fields['isDeletedAt'] = ['label' => 'Deleted At', 'helper' => 'Data di cancellazione del record relativo nel database', 'type' => 'unset'];
|
||||
|
||||
return $fields;
|
||||
}// field_options
|
||||
|
||||
|
||||
public function index() { return $this->CRUD_view(['isIDissue', 'isTipologia', 'isStato', 'isIDlavoratore', 'isTesto', 'isCreatedAt', 'isUpdatedAt', 'isDeletedAt']); }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Auto CRUD terminato
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public function View() {
|
||||
helper(['tools','form']);
|
||||
$data['tab'] = 'admin';
|
||||
|
||||
// Verifico sessione e livello:
|
||||
if (!CheckLevel(1)) {
|
||||
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Issues/show -> Error code 001'); }
|
||||
return redirect()->to('/dashboard');
|
||||
}
|
||||
|
||||
// Ricavo i relativi eventi:
|
||||
$mev = new Issues_Model();
|
||||
$mev->join('Lavoratori', 'Lavoratori.lvIDlavoratore = Issues.isIDlavoratore');
|
||||
|
||||
// Per ora niente filtro, poi in futuro forse
|
||||
|
||||
// imposto l'ordinamento richiesto:
|
||||
CheckSort('Issues',true);
|
||||
$data['sortCol'] = session()->get('sort')['col'];
|
||||
$data['sortDir'] = session()->get('sort')['dir'];
|
||||
$mev->orderBy($data['sortCol'], $data['sortDir']);
|
||||
|
||||
// eseguo la query con paginazione:
|
||||
$data['dataset'] = $mev->paginate(session()->get('pager_num'));
|
||||
$data['pager'] = $mev->pager;
|
||||
|
||||
return view('/pages/issues', $data);
|
||||
}//function select
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public function add() {
|
||||
helper(['tools','form']);
|
||||
$data['tab'] = 'admin';
|
||||
$data['add'] = true;
|
||||
$data['title'] = 'Dettagli dell\'Issue:';
|
||||
|
||||
// Verifico sessione e livello:
|
||||
if (!CheckLevel(1)) {
|
||||
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Issues/add -> Error code 001'); }
|
||||
return redirect()->to('/Lavoratori/login');
|
||||
}
|
||||
|
||||
// Ricavo livello del lavoratore (solo amministratori o superiori, possono editare tutti i campi)
|
||||
$data['enable'] = $enable = CheckLevel(3, false);
|
||||
|
||||
// Gestione POST
|
||||
if ($this->request->getMethod() == 'post') {
|
||||
// Regole per validare i campi introdotti nel form:
|
||||
$rules = [
|
||||
'Tipologia' => 'trim|required',
|
||||
'Stato' => 'trim|required',
|
||||
'Descrizione' => 'trim|required|min_length[8]',
|
||||
];
|
||||
if ($enable){
|
||||
$rules['IDlavoratore'] = 'trim|required';
|
||||
}
|
||||
|
||||
// analisi della validazione
|
||||
if (! $this->validate($rules)) {
|
||||
$data['validation'] = $this->validator;
|
||||
session()->setFlashdata('warning', $data['validation']->listErrors());
|
||||
|
||||
} else {
|
||||
// validazione passata
|
||||
// Preparo i dati per l'inserimento
|
||||
$newData = [
|
||||
//isIDissue' => $this->request->getVar('IDlavoratore'),
|
||||
'isTipologia' => $this->request->getVar('Tipologia'),
|
||||
'isStato' => $this->request->getVar('Stato'),
|
||||
'isTesto' => $this->request->getVar('Descrizione'),
|
||||
];
|
||||
if ($enable){
|
||||
$newData['isIDlavoratore'] = $this->request->getVar('IDlavoratore');
|
||||
} else {
|
||||
$newData['isIDlavoratore'] = session()->get('lavoratore')->lvIDlavoratore;
|
||||
}
|
||||
|
||||
$model = new Issues_Model();
|
||||
if ($model->save($newData)) {
|
||||
// issue inserito con successo, aggiorno lo stato della SIM
|
||||
session()->setFlashdata('success', 'issue inserito con successo');
|
||||
|
||||
// apro la pagina desiderata in base al pulsante utilizzato:
|
||||
if(isset($_POST['crea_continua'])) {
|
||||
// è stato premuto il secondo pulsante, quindi inserisco un secondo valore:
|
||||
//return redirect()->to('/dashboard/orari');
|
||||
} else {
|
||||
return redirect()->to('/Issues/View');
|
||||
}
|
||||
} else {
|
||||
// errore durante l'inserimento dell'issue
|
||||
session()->setFlashdata('danger', 'Errore durante l\'inserimento del record nel DB.');
|
||||
}
|
||||
|
||||
}// analisi validazione
|
||||
|
||||
}// Gestione POST
|
||||
|
||||
// Ricavo i dati per il select dei lavoratori:
|
||||
$modelLavoratori = new Lavoratori_Model();
|
||||
$data['select_lavoratori'] = $modelLavoratori->get_select();
|
||||
|
||||
// Show form
|
||||
echo view('pages/form/Issues_form_add_edit', $data);
|
||||
}//function add
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public function edit($IDissue = null) {
|
||||
helper(['tools','form']);
|
||||
$data['tab'] = 'admin';
|
||||
$data['add'] = false;
|
||||
$data['title'] = 'Dettagli dell\'Issue:';
|
||||
|
||||
// Verifico dato introdotto:
|
||||
if ($IDissue==null) {
|
||||
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Issues/edit -> Error code 001'); }
|
||||
return redirect()->to('/dashboard');
|
||||
}
|
||||
|
||||
// Ricavo livello del lavoratore (solo amministratori o superiori, possono editare tutti i campi)
|
||||
$data['enable'] = $enable = CheckLevel(3, false);
|
||||
|
||||
// Ricavo l'issue selezionato, completo di tutti i particolari:
|
||||
$model = new Issues_Model();
|
||||
$model->join('Lavoratori', 'Issues.isIDlavoratore = Lavoratori.lvIDlavoratore');
|
||||
$data['issue'] = $model->where('isIDissue', $IDissue)
|
||||
->first();
|
||||
// Verifico che esista il record:
|
||||
if (null==$data['issue']) {
|
||||
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Issues/edit -> Error code 003'); }
|
||||
return redirect()->to('/dashboard');
|
||||
}
|
||||
|
||||
// Gestione POST
|
||||
if ($this->request->getMethod() == 'post') {
|
||||
// Regole per validare i campi introdotti nel form:
|
||||
$rules = [
|
||||
'Tipologia' => 'trim|required',
|
||||
'Stato' => 'trim|required',
|
||||
'Descrizione' => 'trim|required|min_length[8]',
|
||||
];
|
||||
if ($enable){
|
||||
$rules['IDlavoratore'] = 'trim|required';
|
||||
}
|
||||
|
||||
// analisi della validazione
|
||||
if (! $this->validate($rules)) {
|
||||
$data['validation'] = $this->validator;
|
||||
session()->setFlashdata('warning', $data['validation']->listErrors());
|
||||
|
||||
}else{
|
||||
// validazione passata
|
||||
// Preparo i dati per l'inserimento
|
||||
$newData = [
|
||||
'isIDissue' => $IDissue,
|
||||
'isTipologia' => $this->request->getVar('Tipologia'),
|
||||
'isStato' => $this->request->getVar('Stato'),
|
||||
'isTesto' => $this->request->getVar('Descrizione'),
|
||||
];
|
||||
if ($enable){
|
||||
$newData['isIDlavoratore'] = $this->request->getVar('IDlavoratore');
|
||||
}
|
||||
|
||||
if ($model->save($newData)) {
|
||||
// issue inserito con successo, aggiorno lo stato della carta
|
||||
session()->setFlashdata('success', 'issue aggiornato con successo');
|
||||
|
||||
// apro la pagina desiderata in base al pulsante utilizzato:
|
||||
if(isset($_POST['crea_continua'])) {
|
||||
// è stato premuto il secondo pulsante, quindi inserisco un secondo valore:
|
||||
//return redirect()->to('/dashboard/orari');
|
||||
} else {
|
||||
return redirect()->to('/Issues/View');
|
||||
}
|
||||
} else {
|
||||
// errore durante l'inserimento dell'issue
|
||||
session()->setFlashdata('danger', 'Errore durante l\'inserimento del record nel DB.');
|
||||
}
|
||||
|
||||
}// analisi validazione
|
||||
|
||||
}// Gestione POST
|
||||
|
||||
// Ricavo i dati per il select dei lavoratori:
|
||||
$modelLavoratori = new Lavoratori_Model();
|
||||
$data['select_lavoratori'] = $modelLavoratori->get_select();
|
||||
|
||||
// Show form
|
||||
echo view('pages/form/Issues_form_add_edit', $data);
|
||||
}//function edit
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public function delete($IDissue = null){
|
||||
helper(['tools']);
|
||||
$data = [];
|
||||
|
||||
// Ricavo l'issue selezionato, completo di tutti i particolari:
|
||||
$model = new Issues_Model();
|
||||
$model->join('Lavoratori', 'Issues.isIDlavoratore = Lavoratori.lvIDlavoratore');
|
||||
$issue = $model->where('isIDissue', $IDissue)
|
||||
->first();
|
||||
// Verifico che esista il record:
|
||||
if (null==$issue) {
|
||||
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Issues/delete -> Error code 001'); }
|
||||
return redirect()->to('/dashboard');
|
||||
}
|
||||
|
||||
// Verifico sessione e livello:
|
||||
if (!(CheckLevel(3) || session()->get('lavoratore')->lvIDlavoratore==$issue->isIDlavoratore)) {
|
||||
session()->setFlashdata('warning', 'Non si hanno i permessi per cancellare un issue inserito da altri lavoratori.');
|
||||
return redirect()->to('/Issues/show');
|
||||
}
|
||||
|
||||
// Elimino il record:
|
||||
if ($model->delete($IDissue)) {
|
||||
// issue cancellato, aggiorno stato della macchina relativa
|
||||
session()->setFlashdata('success', 'Record cancellato correttamente.');
|
||||
|
||||
} else {
|
||||
$data['validation'] = $this->validator;
|
||||
session()->setFlashdata('warning', 'Errore durante la cancellazione del record.');
|
||||
}
|
||||
|
||||
// Show profile
|
||||
return redirect()->to('/Issues/View');
|
||||
} // function delete($id)
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public function export_csv(){
|
||||
helper(['tools','form']);
|
||||
|
||||
// Verifico sessione e livello:
|
||||
if (!CheckLevel(1)) {
|
||||
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/SIMs/export_csv -> Error code 001'); }
|
||||
return redirect()->to('/Issues/show');
|
||||
}
|
||||
|
||||
// Ricavo gli eventi della sim:
|
||||
// Tab: Issues = ['isIDissue', 'isTipologia', 'isStato', 'isIDlavoratore', 'isTesto', 'isCreatedAt', 'isUpdatedAt', 'isDeletedAt'];
|
||||
$mev = new Issues_Model();
|
||||
$mev->join('Lavoratori', 'Issues.isIDlavoratore = Lavoratori.lvIDlavoratore');
|
||||
|
||||
// Per ora niente filtro, poi in futuro forse
|
||||
|
||||
// imposto l'ordinamento richiesto:
|
||||
CheckSort('Issues',true);
|
||||
$data['sortCol'] = session()->get('sort')['col'];
|
||||
$data['sortDir'] = session()->get('sort')['dir'];
|
||||
$mev->orderBy($data['sortCol'], $data['sortDir']);
|
||||
|
||||
// eseguo la query:
|
||||
$data['dataset'] = $mev->asArray()
|
||||
->findAll();
|
||||
|
||||
// Imposto il nome del file da downloadare:
|
||||
$filepath = $_SERVER['MRK_FILE_PATH'];
|
||||
$filename = 'CSiCoDB_Issues_il_' . date('Y-m-d_H-i-s') . '.csv';
|
||||
// file creation
|
||||
$file = fopen($filepath . $filename,"w");
|
||||
// Esport header
|
||||
fputcsv($file,['Issue della web app:']);
|
||||
fputcsv($file,['ID issue', 'Tipologia', 'Stato', 'Descrizione issue', 'ID Lavoratore', 'Nickname', 'Created At', 'Updated At']);
|
||||
foreach ($data['dataset'] as $line){
|
||||
//fputcsv($file,$line);
|
||||
// Seleziono le colonne da esportare:
|
||||
$record = [];
|
||||
$record['isIDissue'] = $line['isIDissue'];
|
||||
$record['isTipologia'] = $line['isTipologia'];
|
||||
$record['isStato'] = $line['isStato'];
|
||||
$record['isTesto'] = $line['isTesto'];
|
||||
$record['isIDlavoratore'] = $line['isIDlavoratore'];
|
||||
$record['lvNickname'] = $line['lvNickname'];
|
||||
$record['isCreatedAt'] = $line['isCreatedAt'];
|
||||
$record['isUpdatedAt'] = $line['isUpdatedAt'];
|
||||
fputcsv($file,$record);
|
||||
}
|
||||
// Chiudo il file
|
||||
fclose($file);
|
||||
// download
|
||||
header("Content-Description: File Transfer");
|
||||
header("Content-Disposition: attachment; filename=".$filename);
|
||||
header("Content-Type: application/csv; ");
|
||||
readfile($filepath . $filename);
|
||||
// deleting file
|
||||
unlink($filepath . $filename);
|
||||
exit();
|
||||
} // function export_csv
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user