Risorse Interventi e Sessioni per applicazione

This commit is contained in:
Thomas Zilio 2020-07-16 11:32:56 +02:00
parent 21bb91ce05
commit 1bb8e6e67a
6 changed files with 164 additions and 46 deletions

View File

@ -16,7 +16,7 @@ class Anagrafiche extends AppResource
protected function getData($last_sync_at)
{
$statement = Anagrafica::withTrashed()->select('idanagrafica')
$statement = Anagrafica::select('idanagrafica')
->whereHas('tipi', function (Builder $query) {
$query->where('descrizione', '=', 'Cliente');
});

View File

@ -19,7 +19,7 @@ class Referenti extends AppResource implements RetrieveInterface
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_referenti.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'";
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND an_anagrafiche.deleted_at IS NULL";
// Filtro per data
if ($last_sync_at) {
@ -35,11 +35,13 @@ class Referenti extends AppResource implements RetrieveInterface
protected function getDetails($id)
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_referenti.id,
an_referenti.nome,
an_referenti.mansione,
an_referenti.telefono,
an_referenti.email
$query = 'SELECT id,
idanagrafica AS id_anagrafica,
IF(idsede = 0, NULL, idsede) AS id_sede,
nome,
mansione,
telefono,
email
FROM an_referenti
WHERE an_referenti.id = '.prepare($id);

View File

@ -18,7 +18,7 @@ class Sedi extends AppResource
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_sedi.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'";
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND an_anagrafiche.deleted_at IS NULL";
// Filtro per data
if ($last_sync_at) {

View File

@ -1,64 +1,93 @@
<?php
namespace Modules\Anagrafiche\API\AppV1;
namespace Modules\Interventi\API\AppV1;
use API\AppResource;
use Auth;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Modules\Anagrafiche\Anagrafica;
class Anagrafiche extends AppResource
class Interventi extends AppResource
{
protected function getCleanupData()
{
return $this->getDeleted('an_anagrafiche', 'idanagrafica');
// Periodo per selezionare interventi
$today = new Carbon();
$start = $today->copy()->subMonths(2);
$end = $today->copy()->addMonth(1);
// Informazioni sull'utente
$user = Auth::user();
$id_tecnico = $user->id_anagrafica;
$query = 'SELECT in_interventi.id FROM in_interventi WHERE
deleted_at IS NOT NULL
OR EXISTS(
SELECT orario_fine FROM in_interventi_tecnici WHERE
in_interventi_tecnici.idintervento = in_interventi.id
AND orario_fine NOT BETWEEN :period_start AND :period_end
AND idtecnico = :id_tecnico
)';
$records = database()->fetchArray($query, [
':period_end' => $end,
':period_start' => $start,
':id_tecnico' => $id_tecnico,
]);
return array_column($records, 'id');
}
protected function getData($last_sync_at)
{
$statement = Anagrafica::withTrashed()->select('idanagrafica')
->whereHas('tipi', function (Builder $query) {
$query->where('descrizione', '=', 'Cliente');
});
// Periodo per selezionare interventi
$today = new Carbon();
$start = $today->copy()->subMonths(2);
$end = $today->copy()->addMonth(1);
// Informazioni sull'utente
$user = Auth::user();
$id_tecnico = $user->id_anagrafica;
$query = 'SELECT in_interventi.id FROM in_interventi WHERE
in_interventi.id IN (
SELECT idintervento FROM in_interventi_tecnici
WHERE in_interventi_tecnici.idintervento = in_interventi.id
AND in_interventi_tecnici.orario_fine BETWEEN :period_start AND :period_end
AND in_interventi_tecnici.idtecnico = :id_tecnico
)
AND deleted_at IS NULL';
// Filtro per data
if ($last_sync_at) {
$last_sync = new Carbon($last_sync_at);
$statement = $statement->where('updated_at', '>', $last_sync);
$query .= ' AND in_interventi.updated_at > '.prepare($last_sync);
}
$records = database()->fetchArray($query, [
':period_start' => $start,
':period_end' => $end,
':id_tecnico' => $id_tecnico,
]);
$results = $statement->get()
->pluck('idanagrafica');
return $results;
return array_column($records, 'id');
}
protected function getDetails($id)
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_anagrafiche.idanagrafica AS id,
an_anagrafiche.ragione_sociale,
an_anagrafiche.piva AS partita_iva,
an_anagrafiche.codice_fiscale,
an_anagrafiche.indirizzo,
an_anagrafiche.indirizzo2,
an_anagrafiche.citta,
an_anagrafiche.cap,
an_anagrafiche.provincia,
an_anagrafiche.km,
IFNULL(an_anagrafiche.lat, 0.00) AS latitudine,
IFNULL(an_anagrafiche.lng, 0.00) AS longitudine,
an_nazioni.nome AS nazione,
an_anagrafiche.fax,
an_anagrafiche.telefono,
an_anagrafiche.cellulare,
an_anagrafiche.email,
an_anagrafiche.sitoweb AS sito_web,
an_anagrafiche.note,
an_anagrafiche.deleted_at
FROM an_anagrafiche
LEFT OUTER JOIN an_nazioni ON an_anagrafiche.id_nazione = an_nazioni.id
WHERE an_anagrafiche.idanagrafica = '.prepare($id);
$query = "SELECT id,
codice,
richiesta,
data_richiesta,
descrizione,
idanagrafica AS id_anagrafica,
idtipointervento AS id_tipo_intervento,
idstatointervento AS id_stato_intervento,
informazioniaggiuntive AS informazioni_aggiuntive,
IF(idsede_destinazione = 0, NULL, idsede_destinazione) AS id_sede,
firma_file,
IF(firma_data = '0000-00-00 00:00:00', '', firma_data) AS firma_data,
firma_nome
FROM in_interventi
WHERE in_interventi.id = ".prepare($id);
$record = database()->fetchOne($query);

View File

@ -0,0 +1,81 @@
<?php
namespace Modules\Interventi\API\AppV1;
use API\AppResource;
use Auth;
use Carbon\Carbon;
class Sessioni extends AppResource
{
protected function getCleanupData()
{
// Periodo per selezionare interventi
$today = new Carbon();
$start = $today->copy()->subMonths(2);
$end = $today->copy()->addMonth(1);
// Informazioni sull'utente
$user = Auth::user();
$id_tecnico = $user->id_anagrafica;
$query = 'SELECT in_interventi_tecnici.id FROM in_interventi_tecnici
INNER JOIN in_interventi ON in_interventi_tecnici.idintervento = in_interventi.id
WHERE
in_interventi.deleted_at IS NOT NULL
OR (orario_fine NOT BETWEEN :period_start AND :period_end AND idtecnico = :id_tecnico)';
$records = database()->fetchArray($query, [
':period_end' => $end,
':period_start' => $start,
':id_tecnico' => $id_tecnico,
]);
return array_column($records, 'id');
}
protected function getData($last_sync_at)
{
// Periodo per selezionare interventi
$today = new Carbon();
$start = $today->copy()->subMonths(2);
$end = $today->copy()->addMonth(1);
// Informazioni sull'utente
$user = Auth::user();
$id_tecnico = $user->id_anagrafica;
$query = 'SELECT in_interventi_tecnici.id FROM in_interventi_tecnici
INNER JOIN in_interventi ON in_interventi_tecnici.idintervento = in_interventi.id
WHERE
in_interventi.deleted_at IS NULL
AND (orario_fine BETWEEN :period_start AND :period_end AND idtecnico = :id_tecnico)';
// Filtro per data
if ($last_sync_at) {
$last_sync = new Carbon($last_sync_at);
$query .= ' AND in_interventi_tecnici.updated_at > '.prepare($last_sync);
}
$records = database()->fetchArray($query, [
':period_start' => $start,
':period_end' => $end,
':id_tecnico' => $id_tecnico,
]);
return array_column($records, 'id');
}
protected function getDetails($id)
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT id,
idintervento AS id_intervento,
orario_inizio,
orario_fine
FROM in_interventi_tecnici
WHERE in_interventi_tecnici.id = '.prepare($id);
$record = database()->fetchOne($query);
return $record;
}
}

View File

@ -146,4 +146,10 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e
(NULL, 'app-v1', 'retrieve', 'tipo-intervento', 'Modules\\TipiIntervento\\API\\AppV1\\TipiIntervento', '1'),
(NULL, 'app-v1', 'retrieve', 'articoli', 'Modules\\Articoli\\API\\AppV1\\Articoli', '1'),
(NULL, 'app-v1', 'retrieve', 'articoli-cleanup', 'Modules\\Articoli\\API\\AppV1\\Articoli', '1'),
(NULL, 'app-v1', 'retrieve', 'articolo', 'Modules\\Articoli\\API\\AppV1\\Articoli', '1');
(NULL, 'app-v1', 'retrieve', 'articolo', 'Modules\\Articoli\\API\\AppV1\\Articoli', '1'),
(NULL, 'app-v1', 'retrieve', 'interventi', 'Modules\\Interventi\\API\\AppV1\\Interventi', '1'),
(NULL, 'app-v1', 'retrieve', 'interventi-cleanup', 'Modules\\Interventi\\API\\AppV1\\Interventi', '1'),
(NULL, 'app-v1', 'retrieve', 'intervento', 'Modules\\Interventi\\API\\AppV1\\Interventi', '1'),
(NULL, 'app-v1', 'retrieve', 'sessioni', 'Modules\\Interventi\\API\\AppV1\\Sessioni', '1'),
(NULL, 'app-v1', 'retrieve', 'sessioni-cleanup', 'Modules\\Interventi\\API\\AppV1\\Sessioni', '1'),
(NULL, 'app-v1', 'retrieve', 'sessione', 'Modules\\Interventi\\API\\AppV1\\Sessioni', '1');