diff --git a/src/API/App/v1/AllegatiInterventi.php b/src/API/App/v1/AllegatiInterventi.php index f94df2c66..bd2fd7088 100644 --- a/src/API/App/v1/AllegatiInterventi.php +++ b/src/API/App/v1/AllegatiInterventi.php @@ -51,7 +51,7 @@ class AllegatiInterventi extends AppResource { // Elenco di interventi di interesse $risorsa_interventi = $this->getRisorsaInterventi(); - $interventi = $risorsa_interventi->getModifiedRecords($last_sync_at); + $interventi = $risorsa_interventi->getModifiedRecords(null); if (empty($interventi)) { return []; } diff --git a/src/API/App/v1/SessioniInterventi.php b/src/API/App/v1/SessioniInterventi.php index 790289efd..129655cdd 100644 --- a/src/API/App/v1/SessioniInterventi.php +++ b/src/API/App/v1/SessioniInterventi.php @@ -40,17 +40,26 @@ class SessioniInterventi extends AppResource $user = Auth::user(); $id_tecnico = $user->id_anagrafica; - $query = 'SELECT in_interventi_tecnici.id FROM in_interventi_tecnici + // 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.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, - ]); - $da_interventi = array_column($records, 'id'); + 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)); @@ -70,11 +79,19 @@ class SessioniInterventi extends AppResource $user = Auth::user(); $id_tecnico = $user->id_anagrafica; - $query = 'SELECT in_interventi_tecnici.id FROM in_interventi_tecnici + // Elenco di interventi di interesse + $risorsa_interventi = $this->getRisorsaInterventi(); + $interventi = $risorsa_interventi->getModifiedRecords(null); + if (empty($interventi)) { + return []; + } + + $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)'; + in_interventi.id IN ('.implode(',', $interventi).') + AND (orario_fine BETWEEN :period_start AND :period_end)'; // Filtro per data if ($last_sync_at) { @@ -83,7 +100,6 @@ class SessioniInterventi extends AppResource $records = database()->fetchArray($query, [ ':period_start' => $start, ':period_end' => $end, - ':id_tecnico' => $id_tecnico, ]); return array_column($records, 'id'); @@ -92,7 +108,7 @@ class SessioniInterventi extends AppResource public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT id, + $query = "SELECT id, idintervento AS id_intervento, idtecnico AS id_tecnico, idtipointervento AS id_tipo_intervento, @@ -101,18 +117,18 @@ class SessioniInterventi extends AppResource km, prezzo_ore_unitario AS prezzo_orario, - IF(tipo_sconto = "UNT", sconto_unitario, sconto_unitario * prezzo_ore_unitario / 100) AS sconto_orario, - IF(tipo_sconto = "PRC", sconto_unitario, 0) AS sconto_orario_percentuale, + IF(tipo_sconto = 'UNT', sconto_unitario, sconto_unitario * prezzo_ore_unitario / 100) AS sconto_orario, + IF(tipo_sconto = 'PRC', sconto_unitario, 0) AS sconto_orario_percentuale, tipo_sconto AS tipo_sconto_orario, prezzo_km_unitario AS prezzo_chilometrico, - IF(tipo_scontokm = "UNT", scontokm_unitario, scontokm_unitario * prezzo_km_unitario / 100) AS sconto_chilometrico, - IF(tipo_scontokm = "PRC", scontokm_unitario, 0) AS sconto_chilometrico_percentuale, + IF(tipo_scontokm = 'UNT', scontokm_unitario, scontokm_unitario * prezzo_km_unitario / 100) AS sconto_chilometrico, + IF(tipo_scontokm = 'PRC', scontokm_unitario, 0) AS sconto_chilometrico_percentuale, tipo_sconto AS tipo_sconto_chilometrico, prezzo_dirittochiamata AS prezzo_diritto_chiamata FROM in_interventi_tecnici - WHERE in_interventi_tecnici.id = '.prepare($id); + WHERE in_interventi_tecnici.id = ".prepare($id); $record = database()->fetchOne($query); @@ -156,6 +172,11 @@ class SessioniInterventi extends AppResource $sessione->delete(); } + protected function getRisorsaInterventi() + { + return new Interventi(); + } + /** * Aggiorna i dati della sessione sulla base dei dati caricati dall'applicazione. *