Aggiunta log rimozione sessioni per velocizzare sincronizzazione app

This commit is contained in:
loviuz 2024-02-08 09:31:07 +01:00
parent e13ad96b65
commit 4e573c53df
2 changed files with 20 additions and 35 deletions

View File

@ -38,6 +38,7 @@ use Modules\TipiIntervento\Tipo as TipoSessione;
use Plugins\ComponentiImpianti\Componente;
use Plugins\ListinoClienti\DettaglioPrezzo;
use Plugins\PianificazioneInterventi\Promemoria;
use Models\OperationLog;
$modulo_impianti = Modules::get('Impianti');
$plugin_impianti = Plugin::pool('Impianti');
@ -906,6 +907,13 @@ switch (post('op')) {
$dbo->query('DELETE FROM in_interventi_tecnici WHERE id='.prepare($id_sessione));
// Log specifico per la rimozione sessione
OperationLog::setInfo('id_module', $id_module);
OperationLog::setInfo('id_plugin', $id_plugin);
OperationLog::setInfo('id_record', $id_record);
OperationLog::setInfo('options', $id_sessione);
OperationLog::build(post('op'));
// Notifica rimozione dell' intervento al tecnico
if (setting('Notifica al tecnico la rimozione della sessione dall\'attività')) {
if (!empty($tecnico['email'])) {

View File

@ -29,41 +29,18 @@ class SessioniInterventi extends AppResource
{
public function getCleanupData($last_sync_at)
{
// Periodo per selezionare interventi
$mesi_precedenti = intval(setting('Mesi per lo storico delle Attività'));
$today = new Carbon();
$start = $today->copy()->subMonths($mesi_precedenti);
$end = $today->copy()->addMonth();
// Informazioni sull'utente
$user = \Auth::user();
$id_tecnico = $user->id_anagrafica;
// Elenco di interventi di interesse
$risorsa_interventi = $this->getRisorsaInterventi();
$interventi = $risorsa_interventi->getCleanupData($last_sync_at);
// Elenco sessioni degli interventi da rimuovere
$da_interventi = [];
if (!empty($interventi)) {
$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.id IN ('.implode(',', $interventi).')
OR (orario_fine NOT BETWEEN :period_start AND :period_end)';
$records = database()->fetchArray($query, [
':period_end' => $end,
':period_start' => $start,
]);
$da_interventi = array_column($records, 'id');
}
$mancanti = $this->getMissingIDs('in_interventi_tecnici', 'id', $last_sync_at);
$results = array_unique(array_merge($da_interventi, $mancanti));
return $results;
// TODO: modificare introducendo deleted_at su sessioni
return database()
->table('zz_operations')
->select('zz_operations.options')
->distinct()
->join('zz_modules', 'zz_modules.id', '=', 'zz_operations.id_module')
->where('zz_modules.name', '=', 'Interventi')
->where('zz_operations.op', '=', 'delete_sessione')
->whereNotNull('zz_operations.options')
->where('zz_operations.created_at', '>', $last_sync_at)
->pluck('zz_operations.options')
->toArray();
}
public function getModifiedRecords($last_sync_at)