Aggiunto supporto a Contratti e Preventivi via API

This commit is contained in:
Thomas Zilio 2020-07-27 16:28:46 +02:00
parent 49cc7423a5
commit cb70da8eb8
7 changed files with 143 additions and 6 deletions

View File

@ -0,0 +1,63 @@
<?php
namespace API\App\v1;
use API\App\AppResource;
use API\Interfaces\RetrieveInterface;
use Carbon\Carbon;
class Contratti extends AppResource implements RetrieveInterface
{
protected function getCleanupData()
{
$query = 'SELECT DISTINCT(co_contratti.id) AS id FROM co_contratti
INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato
WHERE co_staticontratti.is_pianificabile = 0';
$records = database()->fetchArray($query);
$da_stati = array_column($records, 'id');
$mancanti = $this->getMissingIDs('co_contratti', 'id');
$results = array_unique(array_merge($da_stati, $mancanti));
return $results;
}
protected function getData($last_sync_at)
{
$query = "SELECT DISTINCT(co_contratti.id) AS id FROM co_contratti
INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_contratti.idanagrafica
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND co_staticontratti.is_pianificabile = 1 AND an_anagrafiche.deleted_at IS NULL";
// Filtro per data
if ($last_sync_at) {
$last_sync = new Carbon($last_sync_at);
$query .= ' AND co_contratti.updated_at > '.prepare($last_sync);
}
$records = database()->fetchArray($query);
return array_column($records, 'id');
}
protected function retrieveRecord($id)
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT id,
idanagrafica AS id_cliente,
IF(idsede = 0, NULL, idsede) AS id_sede,
nome,
numero,
data,
FROM co_contratti
INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato
WHERE co_contratti.id = '.prepare($id);
$record = database()->fetchOne($query);
return $record;
}
}

View File

@ -37,11 +37,22 @@ class Impianti extends AppResource
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT my_impianti.id,
my_impianti.idanagrafica AS id_anagrafica,
my_impianti.idanagrafica AS id_cliente,
my_impianti.idsede AS id_sede,
my_impianti.matricola,
my_impianti.nome,
my_impianti.descrizione
my_impianti.descrizione,
my_impianti.data AD data_installazione,
my_impianti.proprietario,
my_impianti.ubicazione,
my_impianti.palazzo,
my_impianti.scala,
my_impianti.piano,
my_impianti.interno,
my_impianti.occupante,
my_impianti_categorie.descrizione AS categoria
FROM my_impianti
LEFT JOIN my_impianti_categorie ON my_impianti_categorie.id = my_impianti.id_categoria
WHERE my_impianti.id = '.prepare($id);
$record = database()->fetchOne($query);

View File

@ -94,7 +94,7 @@ class Interventi extends AppResource
richiesta,
data_richiesta,
descrizione,
idanagrafica AS id_anagrafica,
idanagrafica AS id_cliente,
idtipointervento AS id_tipo_intervento,
idstatointervento AS id_stato_intervento,
informazioniaggiuntive AS informazioni_aggiuntive,

View File

@ -21,7 +21,7 @@ class Login extends Resource implements CreateInterface
// Informazioni sull'utente, strettamente collegato ad una anagrafica di tipo Tecnico
$utente = $database->fetchOne("SELECT
`an_anagrafiche`.`idanagrafica` AS id_anagrafica,
`an_anagrafiche`.`idanagrafica` AS id_cliente,
`an_anagrafiche`.`ragione_sociale`
FROM `zz_users`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica`

View File

@ -0,0 +1,63 @@
<?php
namespace API\App\v1;
use API\App\AppResource;
use API\Interfaces\RetrieveInterface;
use Carbon\Carbon;
class Preventivi extends AppResource implements RetrieveInterface
{
protected function getCleanupData()
{
$query = 'SELECT DISTINCT(co_preventivi.id) AS id FROM co_preventivi
INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato
WHERE co_statipreventivi.is_pianificabile = 0';
$records = database()->fetchArray($query);
$da_stati = array_column($records, 'id');
$mancanti = $this->getMissingIDs('co_preventivi', 'id');
$results = array_unique(array_merge($da_stati, $mancanti));
return $results;
}
protected function getData($last_sync_at)
{
$query = "SELECT DISTINCT(co_preventivi.id) AS id FROM co_preventivi
INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_preventivi.idanagrafica
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND co_statipreventivi.is_pianificabile = 1 AND an_anagrafiche.deleted_at IS NULL";
// Filtro per data
if ($last_sync_at) {
$last_sync = new Carbon($last_sync_at);
$query .= ' AND co_preventivi.updated_at > '.prepare($last_sync);
}
$records = database()->fetchArray($query);
return array_column($records, 'id');
}
protected function retrieveRecord($id)
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT id,
idanagrafica AS id_cliente,
IF(idsede = 0, NULL, idsede) AS id_sede,
nome,
numero,
data,
FROM co_preventivi
INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato
WHERE co_preventivi.id = '.prepare($id);
$record = database()->fetchOne($query);
return $record;
}
}

View File

@ -36,7 +36,7 @@ class Referenti extends AppResource implements RetrieveInterface
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT id,
idanagrafica AS id_anagrafica,
idanagrafica AS id_cliente,
IF(idsede = 0, NULL, idsede) AS id_sede,
nome,
mansione,

View File

@ -35,7 +35,7 @@ class Sedi extends AppResource
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_sedi.id,
an_sedi.idanagrafica AS id_anagrafica,
an_sedi.idanagrafica AS id_cliente,
an_sedi.nomesede AS nome,
an_sedi.piva AS partita_iva,
an_sedi.codice_fiscale,