Skip to content

Commit 0417f82

Browse files
committed
feat: aggiornamento api app per introduzione filtri gruppi e tipi anagrafiche nei tipi attività
1 parent 2e35811 commit 0417f82

1 file changed

Lines changed: 36 additions & 7 deletions

File tree

src/API/App/v1/TipiIntervento.php

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,34 +31,63 @@ public function getCleanupData($last_sync_at)
3131

3232
public function getModifiedRecords($last_sync_at)
3333
{
34-
$query = 'SELECT `in_tipiintervento`.`id`, `in_tipiintervento`.`updated_at` FROM `in_tipiintervento`';
34+
$user = $this->getUser();
35+
$database = database();
36+
37+
$query = 'SELECT DISTINCT `in_tipiintervento`.`id`, `in_tipiintervento`.`updated_at`
38+
FROM `in_tipiintervento`
39+
LEFT JOIN `in_tipiintervento_groups` ON `in_tipiintervento_groups`.`idtipointervento` = `in_tipiintervento`.`id`';
40+
$where = [];
3541

3642
// Filtro per data
3743
if ($last_sync_at) {
38-
$query .= ' WHERE `in_tipiintervento`.`updated_at` > '.prepare($last_sync_at);
44+
$where[] = '`in_tipiintervento`.`updated_at` > '.prepare($last_sync_at);
3945
}
4046

41-
$records = database()->fetchArray($query);
47+
// Filtro per gruppo utente: sincronizza solo i tipi intervento che hanno il gruppo utente dell'utente loggato
48+
// oppure che non hanno nessun gruppo utente associato
49+
$id_gruppo = $user['idgruppo'];
50+
$where[] = '(`in_tipiintervento_groups`.`id_gruppo` = '.prepare($id_gruppo).' OR `in_tipiintervento_groups`.`id_gruppo` IS NULL)';
51+
52+
if (!empty($where)) {
53+
$query .= ' WHERE '.implode(' AND ', $where);
54+
}
55+
56+
$records = $database->fetchArray($query);
4257

4358
return $this->mapModifiedRecords($records);
4459
}
4560

4661
public function retrieveRecord($id)
4762
{
63+
$database = database();
64+
4865
// Gestione della visualizzazione dei dettagli del record
49-
$query = 'SELECT
66+
$query = 'SELECT
5067
`in_tipiintervento`.`id`,
5168
`in_tipiintervento_lang`.`title` AS `descrizione`,
5269
`costo_orario` AS prezzo_orario,
5370
`costo_km` AS prezzo_chilometrico,
5471
`costo_diritto_chiamata` AS prezzo_diritto_chiamata
55-
FROM
72+
FROM
5673
`in_tipiintervento`
5774
LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
58-
WHERE
75+
WHERE
5976
`in_tipiintervento`.`id` = '.prepare($id);
6077

61-
$record = database()->fetchOne($query);
78+
$record = $database->fetchOne($query);
79+
80+
// Recupero i tipi anagrafiche collegati al tipo intervento
81+
$tipi_anagrafiche = $database->fetchArray('SELECT `tipo` FROM `in_tipiintervento_tipologie` WHERE `idtipointervento` = '.prepare($id));
82+
83+
// Costruisce un array con indici numerici sequenziali per garantire la serializzazione come array JSON
84+
$tipi = [];
85+
foreach ($tipi_anagrafiche as $row) {
86+
$tipi[] = $row['tipo'];
87+
}
88+
89+
// Assicura che venga sempre restituito un array JSON, non un oggetto
90+
$record['tipi_anagrafiche'] = $tipi;
6291

6392
return $record;
6493
}

0 commit comments

Comments
 (0)