Aggiornamento api
This commit is contained in:
parent
26b5d3027e
commit
0e7f05a4fc
|
@ -31,75 +31,49 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface
|
|||
{
|
||||
public function retrieve($request)
|
||||
{
|
||||
$database = database();
|
||||
$table = 'an_anagrafiche';
|
||||
|
||||
$query = $database->table('an_anagrafiche')
|
||||
->leftJoin('an_nazioni', 'an_anagrafiche.id_nazione', '=', 'an_nazioni.id')
|
||||
->select(
|
||||
'an_anagrafiche.ragione_sociale',
|
||||
'an_anagrafiche.piva',
|
||||
'an_anagrafiche.codice_fiscale',
|
||||
'an_anagrafiche.indirizzo',
|
||||
'an_anagrafiche.indirizzo2',
|
||||
'an_anagrafiche.citta',
|
||||
'an_anagrafiche.cap',
|
||||
'an_anagrafiche.provincia',
|
||||
'an_anagrafiche.km',
|
||||
$database->raw('IFNULL(an_anagrafiche.lat, 0.00) AS latitudine'),
|
||||
$database->raw('IFNULL(an_anagrafiche.lng, 0.00) AS longitudine'),
|
||||
$database->raw('an_nazioni.nome AS nazione'),
|
||||
'an_anagrafiche.telefono',
|
||||
'an_anagrafiche.fax',
|
||||
'an_anagrafiche.cellulare',
|
||||
'an_anagrafiche.email',
|
||||
'an_anagrafiche.sitoweb',
|
||||
'an_anagrafiche.note',
|
||||
'an_anagrafiche.idzona',
|
||||
'an_anagrafiche.deleted_at'
|
||||
)->orderBy('an_anagrafiche.ragione_sociale');
|
||||
$select = [
|
||||
'an_anagrafiche.*',
|
||||
'an_nazioni.nome AS nazione'
|
||||
];
|
||||
|
||||
$joins[] = [
|
||||
'an_nazioni',
|
||||
'an_anagrafiche.id_nazione',
|
||||
'an_nazioni.id'
|
||||
];
|
||||
|
||||
$where[] = ['an_anagrafiche.deleted_at', '=', null];
|
||||
|
||||
$order['an_anagrafiche.ragione_sociale'] = 'ASC';
|
||||
|
||||
if ($request['resource'] != 'anagrafiche') {
|
||||
$type = 'Cliente';
|
||||
|
||||
$query = $query->whereRaw('an_anagrafiche.idanagrafica IN (SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica = (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = ?))', [$type]);
|
||||
$joins[] = [
|
||||
'an_tipianagrafiche_anagrafiche',
|
||||
'an_anagrafiche.idanagrafica',
|
||||
'an_tipianagrafiche_anagrafiche.idanagrafica'
|
||||
];
|
||||
|
||||
$joins[] = [
|
||||
'an_tipianagrafiche',
|
||||
'an_tipianagrafiche_anagrafiche.idtipoanagrafica',
|
||||
'an_tipianagrafiche.idtipoanagrafica'
|
||||
];
|
||||
|
||||
$where[] = ['an_tipianagrafiche.descrizione', '=', $type];
|
||||
}
|
||||
|
||||
// Filtri da richiesta API
|
||||
$allow_list = [
|
||||
'idanagrafica',
|
||||
'ragione_sociale',
|
||||
];
|
||||
$conditions = array_intersect_key((array) $request['where'], array_flip($allow_list));
|
||||
|
||||
// Filtro per ID
|
||||
if (!empty($conditions['idanagrafica'])) {
|
||||
$query = $query->whereIn('an_anagrafiche.idanagrafica', (array) $conditions['idanagrafica']);
|
||||
}
|
||||
|
||||
// Filtro per Ragione sociale
|
||||
if (!empty($conditions['ragione_sociale'])) {
|
||||
$query = $query->where('an_anagrafiche.ragione_sociale', 'like', '%'.$conditions['ragione_sociale'].'%');
|
||||
}
|
||||
|
||||
// Filtri aggiuntivi predefiniti
|
||||
$module = Modules::get('Anagrafiche');
|
||||
$additionals = Modules::getAdditionals($module->id, false);
|
||||
foreach ($additionals['WHR'] as $where) {
|
||||
$query = $query->whereRaw($where);
|
||||
}
|
||||
|
||||
foreach ($additionals['HVN'] as $having) {
|
||||
$query = $query->havingRaw($having);
|
||||
}
|
||||
|
||||
$total_count = $query->count();
|
||||
|
||||
return [
|
||||
'results' => $query->skip($request['page'] * $request['length'])
|
||||
->limit($request['length'])
|
||||
->get()->toArray(),
|
||||
'total-count' => $total_count,
|
||||
'table' => $table,
|
||||
'select' => $select,
|
||||
'joins' => $joins,
|
||||
'where' => $where,
|
||||
'order' => $order
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
public function create($request)
|
||||
|
@ -119,14 +93,14 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface
|
|||
{
|
||||
$anagrafica = Anagrafica::find($request['id']);
|
||||
|
||||
$result = $anagrafica->delete();
|
||||
$anagrafica->delete();
|
||||
}
|
||||
|
||||
public function update($request)
|
||||
{
|
||||
$data = $request['data'];
|
||||
|
||||
$anagrafica = Anagrafica::find($request['id']);
|
||||
$anagrafica = Anagrafica::find($data['id']);
|
||||
|
||||
if (isset($data['ragione_sociale'])) {
|
||||
$anagrafica->ragione_sociale = $data['ragione_sociale'];
|
||||
|
|
|
@ -26,8 +26,10 @@ class Sedi extends Resource implements RetrieveInterface
|
|||
{
|
||||
public function retrieve($request)
|
||||
{
|
||||
$table = 'an_sedi';
|
||||
|
||||
return [
|
||||
'table' => 'an_sedi',
|
||||
'table' => $table
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,9 @@ class Articoli extends Resource implements RetrieveInterface, UpdateInterface, C
|
|||
];
|
||||
|
||||
$where[] = ['mg_articoli.deleted_at', '=', NULL ];
|
||||
|
||||
$whereraw = [];
|
||||
|
||||
$order['mg_articoli.id'] = 'ASC';
|
||||
|
||||
return [
|
||||
|
@ -56,6 +59,7 @@ class Articoli extends Resource implements RetrieveInterface, UpdateInterface, C
|
|||
'select' => $select,
|
||||
'joins' => $joins,
|
||||
'where' => $where,
|
||||
'whereraw' => $whereraw,
|
||||
'order' => $order
|
||||
];
|
||||
}
|
||||
|
|
|
@ -26,10 +26,31 @@ class Impianti extends Resource implements RetrieveInterface
|
|||
{
|
||||
public function retrieve($request)
|
||||
{
|
||||
$query = 'SELECT id, idanagrafica, matricola, nome, descrizione FROM my_impianti';
|
||||
$table = 'my_impianti';
|
||||
|
||||
$select = [
|
||||
'my_impianti.id',
|
||||
'my_impianti.idanagrafica',
|
||||
'my_impianti.matricola',
|
||||
'my_impianti.nome',
|
||||
'my_impianti.descrizione'
|
||||
];
|
||||
|
||||
$where = [];
|
||||
|
||||
$whereraw = [];
|
||||
|
||||
$order = [];
|
||||
|
||||
$group = [];
|
||||
|
||||
return [
|
||||
'query' => $query,
|
||||
'table' => $table,
|
||||
'select' => $select,
|
||||
'where' => $where,
|
||||
'whereraw' => $whereraw,
|
||||
'order' => $order,
|
||||
'group' => $group
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,15 +30,22 @@ class Articoli extends Resource implements RetrieveInterface, CreateInterface
|
|||
{
|
||||
public function retrieve($request)
|
||||
{
|
||||
$query = 'SELECT id, idarticolo AS id_articolo, idintervento AS id_intervento, qta, created_at as data FROM in_righe_interventi WHERE `idarticolo` IS NOT NULL AND `idintervento` = :id_intervento';
|
||||
$table = 'in_righe_interventi';
|
||||
|
||||
$parameters = [
|
||||
':id_intervento' => $request['id_intervento'],
|
||||
$select = [
|
||||
'in_righe_interventi.id',
|
||||
'in_righe_interventi.idarticolo AS id_articolo',
|
||||
'in_righe_interventi.idintervento AS id_intervento',
|
||||
'in_righe_interventi.qta',
|
||||
'in_righe_interventi.created_at as data'
|
||||
];
|
||||
|
||||
$where = [['in_righe_interventi.idarticolo', '!=', NULL ], ['in_righe_interventi.idintervento', '=', $request['id_intervento']]];
|
||||
|
||||
return [
|
||||
'query' => $query,
|
||||
'parameters' => $parameters,
|
||||
'table' => $table,
|
||||
'select' => $select,
|
||||
'where' => $where
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -58,13 +65,5 @@ class Articoli extends Resource implements RetrieveInterface, CreateInterface
|
|||
|
||||
$articolo->save();
|
||||
}
|
||||
|
||||
public function delete($request)
|
||||
{
|
||||
$database = database();
|
||||
|
||||
$database->query('DELETE FROM `in_righe_interventi` WHERE `idarticolo` IS NOT NULL AND `idintervento` = :id_intervento', [
|
||||
':id_intervento' => $request['id_intervento'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@ use Models\Upload;
|
|||
|
||||
class Firma extends Resource implements UpdateInterface
|
||||
{
|
||||
|
||||
// TODO: Da rivedere con upload in base64
|
||||
public function update($request)
|
||||
{
|
||||
$database = database();
|
||||
|
|
|
@ -27,15 +27,19 @@ class Impianti extends Resource implements RetrieveInterface, CreateInterface
|
|||
{
|
||||
public function retrieve($request)
|
||||
{
|
||||
$query = 'SELECT idimpianto AS id_impianto, idintervento AS id_intervento FROM my_impianti_interventi WHERE `idintervento` = :id_intervento';
|
||||
$table = 'my_impianti_interventi';
|
||||
|
||||
$parameters = [
|
||||
':id_intervento' => $request['id_intervento'],
|
||||
$select = [
|
||||
'idimpianto AS id_impianto',
|
||||
'idintervento AS id_intervento'
|
||||
];
|
||||
|
||||
$where[] = ['my_impianti_interventi.idintervento', '=', $request['id_intervento']];
|
||||
|
||||
return [
|
||||
'query' => $query,
|
||||
'parameters' => $parameters,
|
||||
'table' => $table,
|
||||
'select' => $select,
|
||||
'where' => $where
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -44,14 +48,13 @@ class Impianti extends Resource implements RetrieveInterface, CreateInterface
|
|||
$data = $request['data'];
|
||||
$id_record = $data['id_intervento'];
|
||||
|
||||
$database = database();
|
||||
$database->query('DELETE FROM my_impianti_interventi WHERE `idintervento` = :id_intervento', [
|
||||
database()->query('DELETE FROM my_impianti_interventi WHERE `idintervento` = :id_intervento', [
|
||||
':id_intervento' => $id_record,
|
||||
]);
|
||||
|
||||
$impianti = $data['impianti'];
|
||||
foreach ($impianti as $impianto) {
|
||||
$database->insert('my_impianti_interventi', [
|
||||
database()->insert('my_impianti_interventi', [
|
||||
'idintervento' => $id_record,
|
||||
'idimpianto' => $impianto,
|
||||
]);
|
||||
|
|
|
@ -35,58 +35,58 @@ class Interventi extends Resource implements RetrieveInterface, CreateInterface,
|
|||
public function retrieve($request)
|
||||
{
|
||||
// Periodo per selezionare interventi
|
||||
$today = date('Y-m-d');
|
||||
$period_end = date('Y-m-d', strtotime($today.' +7 days'));
|
||||
$period_start = date('Y-m-d', strtotime($today.' -2 months'));
|
||||
$user = Auth::user();
|
||||
|
||||
// AND `in_statiintervento`.`is_completato`=0
|
||||
$query = "SELECT `in_interventi`.`id`,
|
||||
`in_interventi`.`codice`,
|
||||
`in_interventi`.`data_richiesta`,
|
||||
`in_interventi`.`richiesta`,
|
||||
`in_interventi`.`descrizione`,
|
||||
`in_interventi`.`idtipointervento`,
|
||||
`in_interventi`.`idanagrafica`,
|
||||
`in_interventi`.`idsede_destinazione`,
|
||||
`in_interventi`.`idstatointervento`,
|
||||
`in_interventi`.`informazioniaggiuntive`,
|
||||
`in_interventi`.`idclientefinale`,
|
||||
`in_interventi`.`firma_file`,
|
||||
IF(firma_data = '0000-00-00 00:00:00', '', firma_data) AS `firma_data`,
|
||||
`in_interventi`.firma_nome,
|
||||
(SELECT GROUP_CONCAT(CONCAT(my_impianti.matricola, ' - ', my_impianti.nome) SEPARATOR ', ') FROM (my_impianti_interventi INNER JOIN my_impianti ON my_impianti_interventi.idimpianto=my_impianti.id) WHERE my_impianti_interventi.idintervento = `in_interventi`.`id`) AS `impianti`,
|
||||
(SELECT MAX(`orario_fine`) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id`) AS `data`,
|
||||
(SELECT GROUP_CONCAT(DISTINCT ragione_sociale SEPARATOR ', ') FROM `in_interventi_tecnici` INNER JOIN `an_anagrafiche` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica` WHERE `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id`) AS `tecnici`,
|
||||
`in_statiintervento`.`colore` AS `bgcolor`,
|
||||
`in_statiintervento`.`descrizione` AS `stato`,
|
||||
`in_interventi`.`idtipointervento` AS `tipo`
|
||||
FROM `in_interventi`
|
||||
INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento` = `in_statiintervento`.`idstatointervento`
|
||||
INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
LEFT JOIN `an_sedi` ON `in_interventi`.`idsede_destinazione` = `an_sedi`.`id`
|
||||
WHERE EXISTS(SELECT `orario_fine` FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` AND `orario_fine` BETWEEN :period_start AND :period_end AND idtecnico LIKE :idtecnico)";
|
||||
$table = 'in_interventi';
|
||||
|
||||
// Se sono l'admin posso vedere tutte le attività
|
||||
$id_anagrafica = $user->is_admin ? '%' : $user->idanagrafica;
|
||||
|
||||
$query .= '
|
||||
HAVING 2=2
|
||||
ORDER BY `in_interventi`.`data_richiesta` DESC';
|
||||
|
||||
$parameters = [
|
||||
':period_end' => $period_end,
|
||||
':period_start' => $period_start,
|
||||
':idtecnico' => $id_anagrafica,
|
||||
$select = [
|
||||
'in_interventi.*',
|
||||
'MAX(in_interventi_tecnici.orario_fine) as data',
|
||||
'GROUP_CONCAT(DISTINCT b.ragione_sociale SEPARATOR \', \') AS tecnici',
|
||||
'in_statiintervento.descrizione AS stato'
|
||||
];
|
||||
|
||||
$module = Modules::get('Interventi');
|
||||
$joins[] = [
|
||||
'in_statiintervento',
|
||||
'in_interventi.idstatointervento',
|
||||
'in_statiintervento.idstatointervento'
|
||||
];
|
||||
|
||||
$query = Modules::replaceAdditionals($module->id, $query);
|
||||
$joins[] = [
|
||||
'an_anagrafiche',
|
||||
'in_interventi.idanagrafica',
|
||||
'an_anagrafiche.idanagrafica'
|
||||
];
|
||||
|
||||
$joins[] = [
|
||||
'in_interventi_tecnici',
|
||||
'in_interventi_tecnici.idintervento',
|
||||
'in_interventi.id'
|
||||
];
|
||||
|
||||
$joins[] = [
|
||||
'an_anagrafiche as b',
|
||||
'in_interventi_tecnici.idtecnico',
|
||||
'b.ragione_sociale'
|
||||
];
|
||||
|
||||
$where = [];
|
||||
|
||||
if(!$user->is_admin){
|
||||
$where[] = ['in_interventi_tecnici.idtecnico', '=', $user->idanagrafica];
|
||||
}
|
||||
|
||||
$whereraw = [];
|
||||
|
||||
$group = 'in_interventi.id';
|
||||
|
||||
return [
|
||||
'query' => $query,
|
||||
'parameters' => $parameters,
|
||||
'table' => $table,
|
||||
'select' => $select,
|
||||
'joins' => $joins,
|
||||
'where' => $where,
|
||||
'whereraw' => $whereraw,
|
||||
'group' => $group,
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ class Manager
|
|||
|
||||
$where = [];
|
||||
$order = [];
|
||||
|
||||
$whereraw = [];
|
||||
// Selezione campi personalizzati
|
||||
// Esempio:
|
||||
// display=[id,ragione_sociale,telefono]
|
||||
|
@ -137,6 +137,7 @@ class Manager
|
|||
'order' => $order,
|
||||
'page' => $page,
|
||||
'length' => $length,
|
||||
'whereraw' => $whereraw
|
||||
]);
|
||||
|
||||
$response = $this->getResponse($data);
|
||||
|
@ -144,7 +145,14 @@ class Manager
|
|||
|
||||
$table = $response['table'];
|
||||
$joins = $response['joins'];
|
||||
$where = array_merge($where, $response['where']);
|
||||
$group = $response['group'];
|
||||
|
||||
if(!empty($response['where'])){
|
||||
$where = array_merge($where, $response['where']);
|
||||
}
|
||||
if(!empty($response['whereraw'])){
|
||||
$whereraw = $response['whereraw'];
|
||||
}
|
||||
|
||||
if (empty($select)) {
|
||||
$select = $response['select'] ?: $select;
|
||||
|
@ -166,20 +174,36 @@ class Manager
|
|||
$where['#created_at'] = 'created_at >= '.prepare($request['crd']);
|
||||
}
|
||||
|
||||
$query = $database->table($table);
|
||||
|
||||
// Query per ottenere le informazioni
|
||||
$query = $database->table($table)->select($select);
|
||||
foreach ($select as $s) {
|
||||
$query->selectRaw($s);
|
||||
}
|
||||
|
||||
foreach ($joins as $join) {
|
||||
$query->leftJoin($join[0], $join[1], $join[2]);
|
||||
}
|
||||
|
||||
$query->where($where);
|
||||
if (!empty($where)) {
|
||||
$query->where($where);
|
||||
}
|
||||
|
||||
foreach ($whereraw as $w) {
|
||||
$query->whereRaw($w);
|
||||
}
|
||||
|
||||
if (!empty($group)) {
|
||||
$query->groupBy($group);
|
||||
}
|
||||
|
||||
|
||||
$count = $query->count();
|
||||
|
||||
// Composizione query finale
|
||||
$response = [];
|
||||
|
||||
$response['records'] = $database->select($table, $select, $joins, $where, $order, [$page * $length, $length]);
|
||||
$response['records'] = $database->select($table, $select, $joins, $where, $order, [$page * $length, $length], null, $group, $whereraw);
|
||||
$response['total-count'] = $count;
|
||||
}
|
||||
|
||||
|
|
|
@ -451,7 +451,7 @@ class Database extends Util\Singleton
|
|||
*
|
||||
* @return string|array
|
||||
*/
|
||||
public function select($table, $array = [], $joins = [], $conditions = [], $order = [], $limit = null, $return = false)
|
||||
public function select($table, $array = [], $joins = [], $conditions = [], $order = [], $limit = null, $return = false, $group = [], $whereraw = [])
|
||||
{
|
||||
if (
|
||||
!is_string($table) ||
|
||||
|
@ -473,8 +473,17 @@ class Database extends Util\Singleton
|
|||
foreach ($joins as $join) {
|
||||
$statement = $statement->leftJoin($join[0], $join[1], $join[2]);
|
||||
}
|
||||
|
||||
$statement->where($conditions)->select($select);
|
||||
|
||||
foreach ($whereraw as $w) {
|
||||
$statement->whereRaw($w);
|
||||
}
|
||||
|
||||
$statement->where($conditions);
|
||||
|
||||
|
||||
foreach ($select as $s) {
|
||||
$statement->selectRaw($s);
|
||||
}
|
||||
|
||||
// Impostazioni di ordinamento
|
||||
if (!empty($order)) {
|
||||
|
@ -490,6 +499,11 @@ class Database extends Util\Singleton
|
|||
}
|
||||
}
|
||||
|
||||
// Gruppo
|
||||
if (!empty($group)) {
|
||||
$statement = $statement->groupBy($group);
|
||||
}
|
||||
|
||||
// Eventuali limiti
|
||||
if (!empty($limit)) {
|
||||
$offset = is_array($limit) ? $limit[0] : null;
|
||||
|
|
Loading…
Reference in New Issue