1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-11 17:10:40 +01:00

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) protected function getData($last_sync_at)
{ {
$statement = Anagrafica::withTrashed()->select('idanagrafica') $statement = Anagrafica::select('idanagrafica')
->whereHas('tipi', function (Builder $query) { ->whereHas('tipi', function (Builder $query) {
$query->where('descrizione', '=', 'Cliente'); $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_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_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica 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 // Filtro per data
if ($last_sync_at) { if ($last_sync_at) {
@ -35,11 +35,13 @@ class Referenti extends AppResource implements RetrieveInterface
protected function getDetails($id) protected function getDetails($id)
{ {
// Gestione della visualizzazione dei dettagli del record // Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_referenti.id, $query = 'SELECT id,
an_referenti.nome, idanagrafica AS id_anagrafica,
an_referenti.mansione, IF(idsede = 0, NULL, idsede) AS id_sede,
an_referenti.telefono, nome,
an_referenti.email mansione,
telefono,
email
FROM an_referenti FROM an_referenti
WHERE an_referenti.id = '.prepare($id); 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_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_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica 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 // Filtro per data
if ($last_sync_at) { if ($last_sync_at) {

View File

@ -1,64 +1,93 @@
<?php <?php
namespace Modules\Anagrafiche\API\AppV1; namespace Modules\Interventi\API\AppV1;
use API\AppResource; use API\AppResource;
use Auth;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Modules\Anagrafiche\Anagrafica;
class Anagrafiche extends AppResource class Interventi extends AppResource
{ {
protected function getCleanupData() 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) protected function getData($last_sync_at)
{ {
$statement = Anagrafica::withTrashed()->select('idanagrafica') // Periodo per selezionare interventi
->whereHas('tipi', function (Builder $query) { $today = new Carbon();
$query->where('descrizione', '=', 'Cliente'); $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 // Filtro per data
if ($last_sync_at) { if ($last_sync_at) {
$last_sync = new Carbon($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() return array_column($records, 'id');
->pluck('idanagrafica');
return $results;
} }
protected function getDetails($id) protected function getDetails($id)
{ {
// Gestione della visualizzazione dei dettagli del record // Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_anagrafiche.idanagrafica AS id, $query = "SELECT id,
an_anagrafiche.ragione_sociale, codice,
an_anagrafiche.piva AS partita_iva, richiesta,
an_anagrafiche.codice_fiscale, data_richiesta,
an_anagrafiche.indirizzo, descrizione,
an_anagrafiche.indirizzo2, idanagrafica AS id_anagrafica,
an_anagrafiche.citta, idtipointervento AS id_tipo_intervento,
an_anagrafiche.cap, idstatointervento AS id_stato_intervento,
an_anagrafiche.provincia, informazioniaggiuntive AS informazioni_aggiuntive,
an_anagrafiche.km, IF(idsede_destinazione = 0, NULL, idsede_destinazione) AS id_sede,
IFNULL(an_anagrafiche.lat, 0.00) AS latitudine, firma_file,
IFNULL(an_anagrafiche.lng, 0.00) AS longitudine, IF(firma_data = '0000-00-00 00:00:00', '', firma_data) AS firma_data,
an_nazioni.nome AS nazione, firma_nome
an_anagrafiche.fax, FROM in_interventi
an_anagrafiche.telefono, WHERE in_interventi.id = ".prepare($id);
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);
$record = database()->fetchOne($query); $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', 'tipo-intervento', 'Modules\\TipiIntervento\\API\\AppV1\\TipiIntervento', '1'),
(NULL, 'app-v1', 'retrieve', 'articoli', 'Modules\\Articoli\\API\\AppV1\\Articoli', '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', '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');