Fix filtro per attività in api contratti e impianti

This commit is contained in:
Matteo 2024-07-30 18:49:28 +02:00
parent f3fa95033b
commit 2e915b70ce
2 changed files with 2 additions and 19 deletions

View File

@ -44,14 +44,6 @@ class Contratti extends AppResource implements RetrieveInterface
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)
{ {
$risorsa_interventi = $this->getRisorsaInterventi();
$interventi = $risorsa_interventi->getModifiedRecords(null);
if (empty($interventi)) {
return [];
}
$id_interventi = array_keys($interventi);
$query = 'SELECT $query = 'SELECT
DISTINCT(`co_contratti`.`id`) AS id, DISTINCT(`co_contratti`.`id`) AS id,
`co_contratti`.`updated_at` `co_contratti`.`updated_at`
@ -63,7 +55,7 @@ class Contratti extends AppResource implements RetrieveInterface
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).") LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).")
WHERE WHERE
`an_tipianagrafiche_lang`.`title` = 'Cliente' AND `co_staticontratti`.`is_pianificabile` = 1 AND `an_anagrafiche`.`deleted_at` IS NULL AND (SELECT COUNT(id) FROM in_interventi WHERE id_contratto=co_contratti.id AND id IN (".implode(',', $id_interventi).')) > 0'; `an_tipianagrafiche_lang`.`title` = 'Cliente' AND `co_staticontratti`.`is_pianificabile` = 1 AND `an_anagrafiche`.`deleted_at` IS NULL";
// Filtro per data // Filtro per data
if ($last_sync_at) { if ($last_sync_at) {

View File

@ -65,16 +65,7 @@ class Impianti extends AppResource
if ($limite_impianti == 1 && !\Auth::user()->is_admin) { if ($limite_impianti == 1 && !\Auth::user()->is_admin) {
$id_tecnico = \Auth::user()->id_anagrafica; $id_tecnico = \Auth::user()->id_anagrafica;
// Elenco di interventi di interesse $statement->where('idtecnico', $id_tecnico);
$risorsa_interventi = $this->getRisorsaInterventi();
// Da applicazione, i Clienti sono sincronizzati prima degli Interventi: last_sync_at permette di identificare le stesse modifiche
$interventi = $risorsa_interventi->getModifiedRecords(null);
$id_interventi = array_keys($interventi);
$rs_impianti = database()->fetchArray('SELECT idimpianto FROM my_impianti_interventi WHERE idintervento IN ('.implode(',', $id_interventi).')');
$id_impianti = array_column($rs_impianti, 'idimpianto');
$statement->where('idtecnico', $id_tecnico)->orWhereIn('id', $id_impianti);
} }
$records = $statement->get(); $records = $statement->get();