321 lines
9.2 KiB
PHP
321 lines
9.2 KiB
PHP
<?php namespace App\Controllers;
|
|
|
|
use App\Libraries\Crud;
|
|
use App\Models\Stime_Model;
|
|
use App\Models\TipiWork_Model;
|
|
use App\Models\Commesse_Model;
|
|
|
|
|
|
class Stime extends CRUDController {
|
|
|
|
// Tab: Stime = ['stIDcommessa', 'stIDTipoWork', 'stStima', 'stNota'];
|
|
|
|
protected $crud;
|
|
|
|
function __construct() {
|
|
|
|
$params = [
|
|
'table' => 'Stime',
|
|
'dev' => false,
|
|
'fields' => $this->field_options(),
|
|
'form_title_add' => 'Nuova stima',
|
|
'form_title_update' => 'Edit stima',
|
|
'form_submit' => 'Add',
|
|
'table_title' => 'Pagina per la tabella Stime',
|
|
'form_submit_update' => 'Update',
|
|
'base' => '',
|
|
'UpdatedAt' => '',
|
|
'DeletedAt' => '',
|
|
];
|
|
|
|
$this->crud = new Crud($params, service('request'));
|
|
}// __construct
|
|
|
|
|
|
protected function field_options() {
|
|
|
|
$fields = [];
|
|
$fields['stIDcommessa'] = ['label' => 'ID Commessa', 'helper' => 'Identificativo univoco della commessa a cui si riferisce la stima', 'required' => true];
|
|
$fields['stIDTipoWork'] = ['label' => 'ID Tipo Work', 'helper' => 'Identificativo univoco della tipologia di lavoro a cui si riferisce la stima', 'required' => true];
|
|
$fields['stStima'] = ['label' => 'Stima', 'helper' => 'Stima oraria', 'required' => true];
|
|
$fields['stNota'] = ['label' => 'Nota', 'helper' => 'Eventuale nota associata alla stima', 'required' => true];
|
|
|
|
return $fields;
|
|
}// field_options
|
|
|
|
|
|
// public function index() {
|
|
// return $this->CRUD_view(['stIDcommessa', 'stIDTipoWork', 'stStima', 'stNota']);
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// Auto CRUD terminato
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
|
|
public function index() {
|
|
helper(['tools','form']);
|
|
$data['tab'] = 'admin';
|
|
|
|
|
|
// Verifico sessione e livello:
|
|
if (!CheckLevel(1)) { return redirect()->to('/dashboard'); }
|
|
|
|
|
|
// Ricavo le stime in base al filtro:
|
|
// Tab: Stime = ['stIDcommessa', 'stIDTipoWork', 'stStima', 'stNota'];
|
|
// Tab: TipiWork = ['twIDTipoWork', 'twDescrizione', 'twOrdinamento'];
|
|
// Tab: Commesse = ['coIDcommessa', 'coNome', 'coIDcliente', 'coDescrizione', 'coIDstatoCommessa', 'coCreatedAt', 'coUpdatedAt', 'coDeletedAt'];
|
|
$model = new Stime_Model();
|
|
$model->join('TipiWork', 'stIDTipoWork = twIDTipoWork');
|
|
$model->join('Commesse', 'stIDcommessa = coIDcommessa');
|
|
|
|
// Costruisco la query per selezionare le ore da mostrare:
|
|
if (session()->filter_commessa!='-1') { $model->where('stIDcommessa', session()->get('filter_commessa')); }
|
|
|
|
// imposto l'ordinamento richiesto:
|
|
$model->orderBy('twOrdinamento', 'ASC');
|
|
|
|
// eseguo la query con paginazione:
|
|
$data['dataset'] = $model->paginate(session()->get('pager_num'));
|
|
$data['pager'] = $model->pager;
|
|
|
|
// Ricavo i dati per il select delle commesse:
|
|
$modelCommesse = new Commesse_Model();
|
|
$data['select_commesse'] = $modelCommesse->get_select();
|
|
|
|
//return view('test', $data);
|
|
return view('pages/stime', $data);
|
|
|
|
}//function index
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
|
|
public function add(){
|
|
helper(['tools','form']);
|
|
$data['tab'] = 'admin';
|
|
$data['add'] = true;
|
|
$data['title'] = 'Dettagli nuova stima';
|
|
|
|
|
|
// Verifico sessione e livello:
|
|
if (!CheckLevel(1)) {
|
|
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Stime/add -> Error code 001'); }
|
|
return redirect()->to('/Lavoratori/login');
|
|
}
|
|
|
|
// Gestione POST
|
|
// Tab: Stime = ['stIDcommessa', 'stIDTipoWork', 'stStima', 'stNota'];
|
|
if ($this->request->getMethod() == 'post') {
|
|
// Regole per validare i campi introdotti nel form:
|
|
//
|
|
$rules = [
|
|
'IDcommessa' => 'trim|required',
|
|
'IDTipoWork' => 'trim|required',
|
|
'Stima' => 'trim|required',
|
|
'Nota' => '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 = [
|
|
'stIDcommessa' => $this->request->getVar('IDcommessa'),
|
|
'stIDTipoWork' => $this->request->getVar('IDTipoWork'),
|
|
'stStima' => $this->request->getVar('Stima'),
|
|
'stNota' => $this->request->getVar('Nota'),
|
|
];
|
|
|
|
$model = new Stime_Model();
|
|
if ($model->save($newData)) {
|
|
session()->setFlashdata('success', 'Record inserito con successo sul DB');
|
|
if(isset($_POST['crea_continua'])) {
|
|
// è stato premuto il secondo pulsante, quindi inserisco un secondo valore:
|
|
//return redirect()->to('/dashboard/orari');
|
|
} else {
|
|
return redirect()->to('/Stime');
|
|
}
|
|
} else {
|
|
session()->setFlashdata('danger', 'Errore durante l\'inserimento del record nel DB.');
|
|
}
|
|
|
|
}// analisi validazione
|
|
|
|
}// Gestione POST
|
|
|
|
// Ricavo i dati per il select delle commesse:
|
|
$modelCommesse = new Commesse_Model();
|
|
$data['select_commesse'] = $modelCommesse->get_select();
|
|
|
|
// Ricavo i dati per il select delle tipologie:
|
|
$modelTipi = new TipiWork_Model();
|
|
$data['select_tipologie'] = $modelTipi->get_select();
|
|
|
|
// Show profile
|
|
echo view('pages/form/stime_form_add_edit', $data);
|
|
} // function add()
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
|
|
public function edit($IDcm, $IDtw){
|
|
helper(['tools','form']);
|
|
$data['tab'] = 'admin';
|
|
$data['add'] = false;
|
|
$data['title'] = 'Dettagli stima';
|
|
|
|
// Verifico sessione e livello:
|
|
if (!CheckLevel(1)) {
|
|
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Stime/add -> Error code 001'); }
|
|
return redirect()->to('/Lavoratori/login');
|
|
}
|
|
|
|
// Ricavo il profilo della stima da editare
|
|
// Tab: Stime = ['stIDcommessa', 'stIDTipoWork', 'stStima', 'stNota'];
|
|
$model = new Stime_Model();
|
|
$data['stima'] = $model->where('stIDcommessa', $IDcm)->where('stIDTipoWork', $IDtw)->first();
|
|
|
|
// Gestione POST
|
|
// Tab: Stime = ['stIDcommessa', 'stIDTipoWork', 'stStima', 'stNota'];
|
|
if ($this->request->getMethod() == 'post') {
|
|
// Regole per validare i campi introdotti nel form:
|
|
//
|
|
$rules = [
|
|
'IDcommessa' => 'trim|required',
|
|
'IDTipoWork' => 'trim|required',
|
|
'Stima' => 'trim|required',
|
|
'Nota' => '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 = [
|
|
'stIDcommessa' => $this->request->getVar('IDcommessa'),
|
|
'stIDTipoWork' => $this->request->getVar('IDTipoWork'),
|
|
'stStima' => $this->request->getVar('Stima'),
|
|
'stNota' => $this->request->getVar('Nota'),
|
|
];
|
|
|
|
// Cancello i record che devo andare a sostituire o aggiornare:
|
|
$model->where('stIDcommessa',$IDcm)->where('stIDTipoWork',$IDtw)->delete(); // Record di partenza
|
|
$model->where('stIDcommessa',$newData['stIDcommessa'])->where('stIDTipoWork',$newData['stIDTipoWork'])->delete(); // Nuovo record
|
|
|
|
if ($model->save($newData)) {
|
|
session()->setFlashdata('success', 'Record editato con successo sul DB');
|
|
if(isset($_POST['crea_continua'])) {
|
|
// è stato premuto il secondo pulsante, quindi inserisco un secondo valore:
|
|
//return redirect()->to('/dashboard/orari');
|
|
} else {
|
|
return redirect()->to('/Stime');
|
|
}
|
|
} else {
|
|
session()->setFlashdata('danger', 'Errore durante l\'inserimento del record nel DB.');
|
|
}
|
|
|
|
}// analisi validazione
|
|
|
|
}// Gestione POST
|
|
|
|
// Ricavo i dati per il select delle commesse:
|
|
$modelCommesse = new Commesse_Model();
|
|
$data['select_commesse'] = $modelCommesse->get_select();
|
|
|
|
// Ricavo i dati per il select delle tipologie:
|
|
$modelTipi = new TipiWork_Model();
|
|
$data['select_tipologie'] = $modelTipi->get_select();
|
|
|
|
|
|
// Show profile
|
|
echo view('pages/form/stime_form_add_edit', $data);
|
|
} // function edit($id)
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
public function Delete($IDcm = null, $IDtw = null){
|
|
helper(['tools','form']);
|
|
$data = [];
|
|
// Tab: Stime = ['stIDcommessa', 'stIDTipoWork', 'stStima', 'stNota'];
|
|
$model = new Stime_Model();
|
|
|
|
|
|
// Verifico sessione e livello:
|
|
if (!CheckLevel(3)) {
|
|
session()->setFlashdata('warning', 'Non si hanno i permessi per cancellare una stima.');
|
|
return redirect()->to('/Stime');
|
|
}
|
|
|
|
// Verifico dato introdotto:
|
|
if (($IDcm==null) OR ($IDtw==null)) {
|
|
if (ENVIRONMENT === 'development') { session()->setFlashdata('warning', '/Stime/delete -> Error code 001'); }
|
|
return redirect()->to('/Stime');
|
|
}
|
|
|
|
// Elimino il record:
|
|
if ($model->where('stIDcommessa',$IDcm)->where('stIDTipoWork',$IDtw)->delete()) {
|
|
session()->setFlashdata('success', 'Records cancellato correttamente.');
|
|
|
|
} else {
|
|
$data['validation'] = $this->validator;
|
|
session()->setFlashdata('warning', 'Errore durante la cancellazione del record.');
|
|
}
|
|
|
|
// Show profile
|
|
return redirect()->to('/Stime');
|
|
|
|
} // function edit($id)
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|