Ottimizzazioni per la sincronizzazione con l'applicazione
This commit is contained in:
parent
0703214738
commit
9e199d15d9
|
@ -31,7 +31,7 @@ return [
|
|||
'modules/tipi_intervento' => 'Modules\TipiIntervento',
|
||||
'modules/categorie_documenti' => 'Modules\CategorieDocumentali',
|
||||
'modules/listini' => 'Modules\Listini',
|
||||
'modules/my_impianti' => 'Modules\Impianti',
|
||||
'modules/impianti' => 'Modules\Impianti',
|
||||
'modules/impostazioni' => 'Modules\Impostazioni',
|
||||
'plugins/exportFE' => 'Plugins\ExportFE',
|
||||
'plugins/importFE' => 'Plugins\ImportFE',
|
||||
|
|
|
@ -405,7 +405,8 @@ switch (post('op')) {
|
|||
flash()->info(tr('Firma salvata correttamente!'));
|
||||
flash()->info(tr('Attività completata!'));
|
||||
|
||||
$stato = $dbo->selectOne('in_statiintervento', '*', ['codice' => 'OK']);
|
||||
$id_stato = setting("Stato dell'attività dopo la firma");
|
||||
$stato = $dbo->selectOne('in_statiintervento', '*', ['idstatointervento' => $id_stato]);
|
||||
// Notifica chiusura intervento
|
||||
if (!empty($stato['notifica']) && !empty($stato['destinatari'])) {
|
||||
$template = Template::find($stato['id_email']);
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
namespace API\App\v1;
|
||||
|
||||
use API\App\AppResource;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Auth;
|
||||
|
||||
class Clienti extends AppResource
|
||||
{
|
||||
|
@ -15,20 +14,43 @@ class Clienti extends AppResource
|
|||
|
||||
public function getModifiedRecords($last_sync_at)
|
||||
{
|
||||
$statement = Anagrafica::select('idanagrafica')
|
||||
->whereHas('tipi', function (Builder $query) {
|
||||
$query->where('descrizione', '=', 'Cliente');
|
||||
});
|
||||
$query = "SELECT an_anagrafiche.idanagrafica AS id FROM an_anagrafiche
|
||||
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 an_anagrafiche.deleted_at IS NULL";
|
||||
|
||||
$sincronizza_lavorati = setting('Sincronizza Clienti per cui il Tecnico ha lavorato in passato');
|
||||
if (!empty($sincronizza_lavorati)) {
|
||||
$query .= '
|
||||
AND an_anagrafiche.idanagrafica IN (
|
||||
SELECT idanagrafica FROM in_interventi
|
||||
INNER JOIN in_interventi_tecnici ON in_interventi_tecnici.idintervento = in_interventi.id
|
||||
WHERE in_interventi_tecnici.orario_fine BETWEEN :period_start AND :period_end
|
||||
AND in_interventi_tecnici.idtecnico = :id_tecnico
|
||||
|
||||
UNION
|
||||
|
||||
SELECT idanagrafica FROM in_interventi
|
||||
WHERE in_interventi.id NOT IN (
|
||||
SELECT idintervento FROM in_interventi_tecnici
|
||||
)
|
||||
)';
|
||||
}
|
||||
|
||||
// Filtro per data
|
||||
if ($last_sync_at) {
|
||||
$statement = $statement->where('updated_at', '>', $last_sync_at);
|
||||
$query .= ' AND an_anagrafiche.updated_at > '.prepare($last_sync_at);
|
||||
}
|
||||
|
||||
$results = $statement->get()
|
||||
->pluck('idanagrafica');
|
||||
$date = (new Interventi())->getDateDiInteresse();
|
||||
$id_tecnico = Auth::user()->id_anagrafica;
|
||||
$records = database()->fetchArray($query, [
|
||||
':period_start' => $date['start'],
|
||||
':period_end' => $date['end'],
|
||||
':id_tecnico' => $id_tecnico,
|
||||
]);
|
||||
|
||||
return $results;
|
||||
return array_column($records, 'id');
|
||||
}
|
||||
|
||||
public function retrieveRecord($id)
|
||||
|
|
|
@ -13,7 +13,19 @@ class Impostazioni extends AppResource
|
|||
|
||||
public function getModifiedRecords($last_sync_at)
|
||||
{
|
||||
$query = 'SELECT zz_settings.id FROM zz_settings WHERE sezione = "Applicazione"';
|
||||
$query = "SELECT zz_settings.id FROM zz_settings WHERE (sezione = 'Applicazione'";
|
||||
|
||||
// Aggiunta delle impostazioni esterne alla sezione Applicazione
|
||||
$impostazioni_esterne = $this->getImpostazioniEsterne();
|
||||
if (!empty($impostazioni_esterne)) {
|
||||
$impostazioni = [];
|
||||
foreach ($impostazioni_esterne as $imp) {
|
||||
$impostazioni[] = prepare($imp);
|
||||
}
|
||||
|
||||
$query .= ' OR nome IN ('.implode(', ', $impostazioni).')';
|
||||
}
|
||||
$query .= ')';
|
||||
|
||||
// Filtro per data
|
||||
if ($last_sync_at) {
|
||||
|
@ -39,4 +51,13 @@ class Impostazioni extends AppResource
|
|||
|
||||
return $record;
|
||||
}
|
||||
|
||||
protected function getImpostazioniEsterne()
|
||||
{
|
||||
return [
|
||||
'Mostra prezzi al tecnico',
|
||||
"Stato dell'attività alla chiusura",
|
||||
"Stato dell'attività dopo la firma",
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,19 +13,33 @@ use Modules\TipiIntervento\Tipo as TipoSessione;
|
|||
|
||||
class Interventi extends AppResource
|
||||
{
|
||||
public function getDateDiInteresse()
|
||||
{
|
||||
// Periodo per selezionare gli interventi
|
||||
$today = new Carbon();
|
||||
$mesi_precedenti = intval(setting('Mesi per lo storico delle Attività'));
|
||||
$start = $today->copy()->subMonths($mesi_precedenti);
|
||||
$end = $today->copy()->addMonth(1);
|
||||
|
||||
return [
|
||||
'today' => $today,
|
||||
'start' => $start,
|
||||
'end' => $end,
|
||||
];
|
||||
}
|
||||
|
||||
public function getCleanupData($last_sync_at)
|
||||
{
|
||||
// Periodo per selezionare interventi
|
||||
$today = new Carbon();
|
||||
$start = $today->copy()->subMonths(2);
|
||||
$end = $today->copy()->addMonth(1);
|
||||
$date = $this->getDateDiInteresse();
|
||||
$start = $date['start'];
|
||||
$end = $date['end'];
|
||||
|
||||
$remove_end = $start->copy();
|
||||
$remove_start = $remove_end->copy()->subMonths(2);
|
||||
|
||||
// Informazioni sull'utente
|
||||
$user = Auth::user();
|
||||
$id_tecnico = $user->id_anagrafica;
|
||||
$id_tecnico = Auth::user()->id_anagrafica;
|
||||
|
||||
$query = 'SELECT in_interventi.id FROM in_interventi WHERE
|
||||
deleted_at IS NOT NULL
|
||||
|
@ -58,13 +72,12 @@ class Interventi extends AppResource
|
|||
public function getModifiedRecords($last_sync_at)
|
||||
{
|
||||
// Periodo per selezionare interventi
|
||||
$today = new Carbon();
|
||||
$start = $today->copy()->subMonths(2);
|
||||
$end = $today->copy()->addMonth(1);
|
||||
$date = $this->getDateDiInteresse();
|
||||
$start = $date['start'];
|
||||
$end = $date['end'];
|
||||
|
||||
// Informazioni sull'utente
|
||||
$user = Auth::user();
|
||||
$id_tecnico = $user->id_anagrafica;
|
||||
$id_tecnico = Auth::user()->id_anagrafica;
|
||||
|
||||
$query = 'SELECT in_interventi.id FROM in_interventi WHERE
|
||||
deleted_at IS NULL AND (
|
||||
|
@ -86,6 +99,7 @@ class Interventi extends AppResource
|
|||
if ($last_sync_at) {
|
||||
$query .= ' AND in_interventi.updated_at > '.prepare($last_sync_at);
|
||||
}
|
||||
|
||||
$records = database()->fetchArray($query, [
|
||||
':period_start' => $start,
|
||||
':period_end' => $end,
|
||||
|
|
|
@ -145,9 +145,17 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e
|
|||
(NULL, 'app-v1', 'create', 'email-rapportino', 'API\\App\\v1\\RapportinoIntervento', '1');
|
||||
|
||||
-- Impostazioni relative all'applicazione
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES
|
||||
(NULL, 'Google Maps API key', '', 'string', '1', 'Applicazione', 1),
|
||||
(NULL, 'Mostra prezzi', '1', 'boolean', '1', 'Applicazione', 1);
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES
|
||||
(NULL, 'Google Maps API key', '', 'string', '1', 'Applicazione', 1, ''),
|
||||
(NULL, 'Mostra prezzi', '1', 'boolean', '1', 'Applicazione', 2, ''),
|
||||
(NULL, 'Sincronizza Clienti per cui il Tecnico ha lavorato in passato', '1', 'boolean', '1', 'Applicazione', 3, ''),
|
||||
(NULL, 'Mesi per lo storico delle Attività', '6', 'integer', '1', 'Applicazione', 3, '');
|
||||
|
||||
-- Impostazioni relative gli stati delle Attività
|
||||
UPDATE `zz_settings` SET `sezione` = 'Attività' WHERE `sezione` = 'Interventi';
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES
|
||||
(NULL, 'Stato dell''attività alla chiusura', '1', 'query=SELECT idstatointervento AS id, descrizione AS text FROM in_statiintervento WHERE is_completato = 1', (SELECT idstatointervento AS id FROM in_statiintervento WHERE codice = 'OK'), 'Attività', 1, 'Stato in cui spostare l''attitivà a seguito della chiusura'),
|
||||
(NULL, 'Stato dell''attività dopo la firma', '1', 'query=SELECT idstatointervento AS id, descrizione AS text FROM in_statiintervento WHERE is_completato = 1', (SELECT idstatointervento AS id FROM in_statiintervento WHERE codice = 'OK'), 'Attività', 2, 'Stato in cui spostare l''attitivà dopo la firma del cliente');;
|
||||
|
||||
-- Aggiunta risorsa per il download degli allegati
|
||||
INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `enabled`) VALUES (NULL, 'v1', 'retrieve', 'allegato', 'API\\Common\\Allegato', '1');
|
||||
|
|
Loading…
Reference in New Issue