Miglioramento API generali

This commit is contained in:
Thomas Zilio 2018-07-31 14:50:28 +02:00
parent b61f754d13
commit 3549e8bd65
5 changed files with 146 additions and 9 deletions

View File

@ -0,0 +1,20 @@
<?php
switch ($resource) {
case 'allegato':
$module = Modules::get($request['module']);
$upload = Uploads::upload($_FILES['upload'], [
'name' => $request['name'],
'id_module' => $module['id'],
'id_record' => $id_record,
]);
$results['filename'] = $upload;
break;
}
return [
'allegato',
];

View File

@ -0,0 +1,89 @@
<?php
include_once Modules::filepath('Articoli', 'modutil.php');
switch ($resource) {
case 'intervento':
$data = $request['data'];
// Se l'idintervento non esiste, creo un nuovo intervento
$formato = get_var('Formato codice intervento');
$template = str_replace('#', '%', $formato);
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
if (empty($codice)) {
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
}
if (!empty($codice) && !empty($data['id_anagrafica']) && !empty($data['id_tipo_intervento'])) {
// Salvataggio modifiche intervento
$dbo->insert('in_interventi', [
'idanagrafica' => $data['id_anagrafica'],
'idclientefinale' => 0,
'idstatointervento' => $data['id_stato_intervento'],
'idtipointervento' => $data['id_tipo_intervento'],
'idsede' => 0,
'idautomezzo' => 0,
'codice' => $codice,
'data_richiesta' => $data['data_richiesta'],
'richiesta' => $data['richiesta'],
'descrizione' => $data['descrizione'],
'informazioniaggiuntive' => $data['informazioni_aggiuntive'],
]);
$results['id_record'] = $dbo->lastInsertedID();
}
break;
case 'sessione':
$data = $request['data'];
add_tecnico($data['id_intervento'], $data['id_tecnico'], $data['orario_inizio'], $data['orario_fine']);
break;
case 'articolo_intervento':
$data = $request['data'];
// Inserisco movimento generico per questo articolo
add_movimento_magazzino($data['id_articolo'], $data['qta'], [
'idintervento' => $data['id_intervento'],
'idautomezzo' => $data['id_automezzo'],
], 'Movimento da APP - Intervento '.$data['idintervento'], $data['data']);
// collego articolo all'intervento in questione
$q = "INSERT INTO mg_articoli_interventi(
idarticolo,
idintervento,
descrizione,
prezzo_vendita,
idiva_vendita,
idautomezzo,
qta
) VALUES(
'".$data['id_articolo']."',
'".$data['id_intervento']."',
(SELECT descrizione FROM mg_articoli WHERE mg_articoli.id=\"".$data['id_articolo'].'"),
(SELECT prezzo_vendita FROM mg_articoli WHERE mg_articoli.id="'.$data['id_articolo']."\"),
(SELECT valore FROM `zz_impostazioni` WHERE nome=\"Iva predefinita\"),
'".$data['id_automezzo']."',
'".$data['qta']."'
)";
$dbo->query($q);
$dbo->query('UPDATE mg_articoli SET qta=(qta - '.$data['qta'].") WHERE id='".$data['id_articolo']."'");
break;
}
return [
'intervento',
'sessione',
'articolo_intervento',
];

View File

@ -99,22 +99,20 @@ switch ($resource) {
// Elenco sessioni dell'intervento per l'applicazione
case 'sessioni_intervento':
// Periodo per selezionare interventi
$today = date('Y-m-d');
$period_end = date('Y-m-d', strtotime($today.' +7 days'));
$query = 'SELECT id, idintervento, orario_inizio, orario_fine FROM in_interventi_tecnici WHERE `idintervento` = :id_intervento';
$query = 'SELECT id, idintervento, orario_inizio, orario_fine FROM in_interventi_tecnici WHERE `orario_fine` <= :period_end';
if ($user['gruppo'] == 'Tecnici') {
$query .= ' AND `idtecnico` = :id_tecnico';
}
// TODO: rimosse seguenti clausole:
// WHERE `in_interventi`.idstatointervento IN(SELECT idstatointervento FROM in_statiintervento WHERE app_download=1)
// nel database ufficiale manca in_statiintervento.app_download
// AND `in_interventi_tecnici`.`idtecnico`='".$tecnico[0]['idanagrafica']."'
// nell'inner join con in_interventi_tecnici -> ad oggi 16-05-2018 non gestisco ancora idtecnico
$parameters = [
':period_end' => $period_end,
':id_intervento' => $request['id_intervento'],
':id_tecnico' => $user['idanagrafica'],
];
$results = $dbo->fetchArray($query, $parameters.' LIMIT '.($page * $length).', '.$length);

View File

@ -100,9 +100,35 @@ switch ($resource) {
}
}
break;
case 'intervento':
$data = $request['data'];
$dbo->update('in_interventi', [
'idstatointervento' => $data['idstatointervento'],
'descrizione' => $data['descrizione'],
'informazioniaggiuntive' => $data['informazioniaggiuntive'],
], ['id' => $data['id']]);
// $dbo->query( 'DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($record['id']).' AND idtecnico='.prepare($idtecnico) );
break;
case 'firma_intervento':
$data = $request['data'];
$dbo->update('in_interventi', [
'firma_file' => $data['firma_file'],
'firma_data' => $data['firma_data'],
'firma_nome' => $data['firma_nome'],
], ['id' => $data['id']]);
break;
}
return [
'sync',
'intervento',
'firma_intervento',
];

View File

@ -105,6 +105,9 @@ class API extends \Util\Singleton
if (in_array($resource, array_keys($resources))) {
$dbo = $database;
// Inclusione funzioni del modulo
include_once App::filepath(DOCROOT.'/modules/'.$resources[$resource].'|custom|', 'modutil.php');
// Esecuzione delle operazioni personalizzate
$filename = DOCROOT.'/modules/'.$resources[$resource].'/api/'.$kind.'.php';
include $filename;
@ -204,7 +207,8 @@ class API extends \Util\Singleton
protected function fileRequest($request, $kind)
{
$user = Auth::user();
$results = [];
// Controllo sulla compatibilità dell'API
if (!self::isCompatible()) {
return self::response([