Aggiunta log rimozione sessioni per velocizzare sincronizzazione app
This commit is contained in:
parent
e13ad96b65
commit
4e573c53df
|
@ -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'])) {
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue