Start Point al 2026
This commit is contained in:
commit
8a76e1db3b
371 files changed
+160283
No files matched your search
@@ -0,0 +1,197 @@
|
||||
<?php namespace App\Models;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `Commesse` (
|
||||
`coIDcommessa` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identificativo univoco della commessa',
|
||||
`coNome` varchar(32) NOT NULL COMMENT 'Nome univoco della commessa o codice identificativo della commessa',
|
||||
`coIDcliente` int(11) NOT NULL COMMENT 'Codice identificativo del cliente a cui la commessa è associata',
|
||||
`coDescrizione` text NOT NULL COMMENT 'Descrizione della commessa, cioè del lavoro che essa richiede',
|
||||
`coIDstatoCommessa` varchar(16) NOT NULL COMMENT 'Stato a cui la commessa è associata, ne permette la filtrazione in modo conveniente',
|
||||
`coCreatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp di inserimento del record nel database',
|
||||
`coUpdatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp in cui il record è stato aggiornato',
|
||||
`coDeletedAt` timestamp NULL DEFAULT NULL COMMENT 'Timestamp in cui il record è stato virtualmente cancellato (senza delete reale)',
|
||||
PRIMARY KEY (`coIDcommessa`),
|
||||
UNIQUE KEY `coIDcommessa` (`coIDcommessa`),
|
||||
UNIQUE KEY `coNome` (`coNome`),
|
||||
KEY `idx_Clienti_Used` (`coIDstatoCommessa`,`coModificatoIl`,`coNome`),
|
||||
KEY `FK_Commesse-Clienti` (`coIDcliente`),
|
||||
KEY `FK_Commesse-StatiCommessa` (`coIDstatoCommessa`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=197 DEFAULT CHARSET=utf8 COMMENT='Elenco delle Commesse';
|
||||
|
||||
Fields:
|
||||
Tab: Commesse = ['coIDcommessa', 'coNome', 'coIDcliente', 'coDescrizione', 'coIDstatoCommessa', 'coCreatedAt', 'coUpdatedAt', 'coDeletedAt'];
|
||||
|
||||
*/
|
||||
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
|
||||
|
||||
class Commesse_Model extends Model{
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Property
|
||||
|
||||
|
||||
protected $table = 'Commesse';
|
||||
protected $primaryKey = 'coIDcommessa';
|
||||
|
||||
protected $returnType = 'App\Entities\Commessa';
|
||||
//protected $returnType = 'array';
|
||||
|
||||
protected $allowedFields = ['coNome', 'coIDcliente', 'coDescrizione', 'coIDstatoCommessa'];
|
||||
|
||||
protected $useSoftDeletes = true;
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'coCreatedAt';
|
||||
protected $updatedField = 'coUpdatedAt';
|
||||
protected $deletedField = 'coDeletedAt';
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Events
|
||||
|
||||
|
||||
//protected $beforeInsert = ['beforeInsert'];
|
||||
//protected $afterInsert = ['afterInsert'];
|
||||
//protected $beforeUpdate = ['beforeUpdate'];
|
||||
//protected $afterUpdate = ['afterUpdate'];
|
||||
//protected $beforeDelete = ['beforeDelete'];
|
||||
//protected $afterDelete = ['afterDelete'];
|
||||
//protected $afterFind = ['afterFind'];
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Methods
|
||||
|
||||
|
||||
|
||||
// Ritorna le coppie val,txt per compilare il select delle commesse in base al filtro attivo sugli orari
|
||||
public function get_select_on_orari(){
|
||||
// Tab: Commesse = ['coIDcommessa', 'coNome', 'coIDcliente', 'coDescrizione', 'coIDstatoCommessa', 'coModificatoIl', 'coCreatedAt', 'coUpdatedAt', 'coDeletedAt'];
|
||||
|
||||
// Creo la string SQL:
|
||||
// - join fra le tabelle
|
||||
$sql = 'SELECT Commesse.coIDcommessa AS val, Commesse.coNome AS txt FROM Commesse, Orari WHERE Commesse.coIDcommessa=Orari.orIDcommessa';
|
||||
// - elimino le commesse chiuse:
|
||||
$sql .= ' AND coIDstatoCommessa<>\'Chiusa\'';
|
||||
// - Applico il filtro temporale:
|
||||
$sql .= ' AND Orari.orData>=\'' . session()->get('filter_dal') . '\' AND Orari.orData<=\'' . session()->get('filter_al') . " 23:59:59" . '\'';
|
||||
// - applico eventuale filtro per lavoratore
|
||||
if ((null !== session()->get('filter_lavoratore')) && (session()->get('filter_lavoratore')!='-1')) {
|
||||
$sql .= ' AND Orari.orIDlavoratore=\'' . session()->get('filter_lavoratore') . '\'';
|
||||
}
|
||||
// - Applico il filtro sulla tipologia di orario
|
||||
if ((null !== session()->get('filter_tipo_ore')) && (session()->get('filter_tipo_ore')!='-1')) {
|
||||
$sql .= ' AND Orari.orIDTipoOre=\'' . session()->get('filter_tipo_ore') . '\'';
|
||||
}
|
||||
// - Non applico il filtro sulla commessa:
|
||||
if ((null !== session()->get('filter_commessa')) && (session()->get('filter_commessa')!='-1')) {
|
||||
$sql .= ' AND Orari.orIDcommessa=\'' . session()->get('filter_commessa') . '\'';
|
||||
}
|
||||
// - Raggruppo i risultati:
|
||||
$sql .= ' GROUP BY(txt)';
|
||||
// - Ordino in modo decrescente sul numero di presenze e in modo alfabetico.
|
||||
$sql .= ' ORDER BY COUNT(val) DESC, txt';
|
||||
|
||||
// Creo la query:
|
||||
$query = $this->query($sql);
|
||||
|
||||
// Eseguo la query sul DB:
|
||||
return $query->getResult();
|
||||
|
||||
} // function select_on_orari
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// Ritorna le coppie val,txt per compilare il select delle commesse in base al filtro attivo sulle spese
|
||||
public function get_select_on_spese(){
|
||||
|
||||
// Creo la string SQL:
|
||||
// - join fra le tabelle\
|
||||
$sql = 'SELECT Commesse.coIDcommessa AS val, CONCAT(Commesse.coNome, \' : \', Commesse.coDescrizione) AS txt FROM Commesse, Spese WHERE Commesse.coIDcommessa=Spese.spIDcommessa';
|
||||
// - elimino le commesse chiuse:
|
||||
$sql .= ' AND coIDstatoCommessa<>\'Chiusa\'';
|
||||
// - Applico il filtro temporale:
|
||||
$sql .= ' AND Spese.spData>=\'' . session()->get('filter_dal') . '\' AND Spese.spData<=\'' . session()->get('filter_al') . " 23:59:59" . '\'';
|
||||
// - applico eventuale filtro per lavoratore
|
||||
if ((null !== session()->get('filter_lavoratore')) && (session()->get('filter_lavoratore')!='-1')) {
|
||||
$sql .= ' AND Spese.spIDlavoratore=\'' . session()->get('filter_lavoratore') . '\'';
|
||||
}
|
||||
// - Applico il filtro sulla tipologia di spesa
|
||||
if ((null !== session()->get('filter_rimborso')) && (session()->get('filter_rimborso')!='-1')) {
|
||||
$sql .= ' AND Spese.spDaRimborsare=\'' . session()->get('filter_rimborso') . '\'';
|
||||
}
|
||||
// - Non applico il filtro sulla commessa:
|
||||
if ((null !== session()->get('filter_commessa')) && (session()->get('filter_commessa')!='-1')) {
|
||||
$sql .= ' AND Spese.spIDcommessa=\'' . session()->get('filter_commessa') . '\'';
|
||||
}
|
||||
// - Raggruppo i risultati:
|
||||
$sql .= ' GROUP BY(txt)';
|
||||
// - Ordino in modo decrescente sul numero di presenze e in modo alfabetico.
|
||||
$sql .= ' ORDER BY COUNT(val) DESC, txt';
|
||||
|
||||
// Creo la query:
|
||||
$query = $this->query($sql);
|
||||
|
||||
// Eseguo la query sul DB:
|
||||
return $query->getResult();
|
||||
|
||||
} // function select_on_orari
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// Ritorna le coppie val,txt per compilare il select delle commesse
|
||||
public function get_select(){
|
||||
$query = $this->query('SELECT coIDcommessa AS val, CONCAT(coNome, \' : \', coDescrizione) AS txt FROM Commesse WHERE coIDstatoCommessa<>\'Chiusa\' ORDER BY coUpdatedAt DESC');
|
||||
return $query->getResult();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// Ritorna i dati per il report della commessa indicata
|
||||
public function get_ReportByCommessa($ID){
|
||||
$query = $this->query("
|
||||
SELECT
|
||||
coIDcommessa AS ID,
|
||||
coNome AS Nome,
|
||||
(SELECT clNome FROM `Clienti` WHERE clIDcliente=coIDcliente) AS Cliente,
|
||||
coDescrizione AS Descrizione,
|
||||
(SELECT sum(stStima) FROM `Stime` WHERE stIDcommessa=coIDcommessa) AS Stima,
|
||||
(SELECT sum(orOre) FROM `Orari` WHERE orIDcommessa=coIDcommessa) AS Usate,
|
||||
coIDstatoCommessa AS Stato,
|
||||
coCreatedAt AS CreatedAt,
|
||||
coUpdatedAt AS UpdatedAt,
|
||||
coDeletedAt AS DeletedAt
|
||||
FROM `Commesse`
|
||||
WHERE coIDcommessa='$ID'
|
||||
");
|
||||
return $query->getResult();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
}//class Commesse_Model
|
||||
Reference in new issue
Block a user