diff --git a/modules/articoli/src/API/AppV1/Articoli.php b/modules/articoli/src/API/AppV1/Articoli.php index 65308e721..15c303a4a 100644 --- a/modules/articoli/src/API/AppV1/Articoli.php +++ b/modules/articoli/src/API/AppV1/Articoli.php @@ -14,12 +14,12 @@ class Articoli extends AppResource protected function getData($last_sync_at) { - $query = 'SELECT mg_articoli.id FROM mg_articoli'; + $query = 'SELECT mg_articoli.id FROM mg_articoli WHERE deleted_at IS NULL'; // Filtro per data if ($last_sync_at) { $last_sync = new Carbon($last_sync_at); - $query .= ' WHERE mg_articoli.updated_at > '.prepare($last_sync); + $query .= ' AND mg_articoli.updated_at > '.prepare($last_sync); } $records = database()->fetchArray($query); diff --git a/modules/interventi/src/API/AppV1/Interventi.php b/modules/interventi/src/API/AppV1/Interventi.php new file mode 100644 index 000000000..813b054e4 --- /dev/null +++ b/modules/interventi/src/API/AppV1/Interventi.php @@ -0,0 +1,67 @@ +getDeleted('an_anagrafiche', 'idanagrafica'); + } + + protected function getData($last_sync_at) + { + $statement = Anagrafica::withTrashed()->select('idanagrafica') + ->whereHas('tipi', function (Builder $query) { + $query->where('descrizione', '=', 'Cliente'); + }); + + // Filtro per data + if ($last_sync_at) { + $last_sync = new Carbon($last_sync_at); + $statement = $statement->where('updated_at', '>', $last_sync); + } + + $results = $statement->get() + ->pluck('idanagrafica'); + + return $results; + } + + protected function getDetails($id) + { + // Gestione della visualizzazione dei dettagli del record + $query = 'SELECT an_anagrafiche.idanagrafica AS id, + an_anagrafiche.ragione_sociale, + an_anagrafiche.piva AS partita_iva, + an_anagrafiche.codice_fiscale, + an_anagrafiche.indirizzo, + an_anagrafiche.indirizzo2, + an_anagrafiche.citta, + an_anagrafiche.cap, + an_anagrafiche.provincia, + an_anagrafiche.km, + IFNULL(an_anagrafiche.lat, 0.00) AS latitudine, + IFNULL(an_anagrafiche.lng, 0.00) AS longitudine, + an_nazioni.nome AS nazione, + an_anagrafiche.fax, + an_anagrafiche.telefono, + an_anagrafiche.cellulare, + an_anagrafiche.email, + an_anagrafiche.sitoweb AS sito_web, + an_anagrafiche.note, + an_anagrafiche.deleted_at + FROM an_anagrafiche + LEFT OUTER JOIN an_nazioni ON an_anagrafiche.id_nazione = an_nazioni.id + WHERE an_anagrafiche.idanagrafica = '.prepare($id); + + $record = database()->fetchOne($query); + + return $record; + } +} diff --git a/modules/utenti/src/API/AppV1/Login.php b/modules/utenti/src/API/AppV1/Login.php new file mode 100644 index 000000000..239477e7e --- /dev/null +++ b/modules/utenti/src/API/AppV1/Login.php @@ -0,0 +1,60 @@ +attempt($request['username'], $request['password'])) { + $user = $this->getUser(); + $token = auth()->getToken(); + + // Informazioni sull'utente, strettamente collegato ad una anagrafica di tipo Tecnico + $utente = $database->fetchOne("SELECT + `an_anagrafiche`.`idanagrafica` AS id_anagrafica, + `an_anagrafiche`.`ragione_sociale` + FROM `zz_users` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` + INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica + INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica + WHERE an_tipianagrafiche.descrizione = 'Tecnico' AND `id` = :id", [ + ':id' => $user['id'], + ]); + + if (!empty($utente)) { + // Informazioni da restituire tramite l'API + $response = [ + 'id_anagrafica' => $utente['id_anagrafica'], + 'ragione_sociale' => $utente['ragione_sociale'], + 'token' => $token, + 'version' => Update::getVersion(), + ]; + } else { + $response = [ + 'status' => Response::getStatus()['unauthorized']['code'], + ]; + } + } else { + $response = [ + 'status' => Response::getStatus()['unauthorized']['code'], + ]; + + // Se รจ in corso un brute-force, aggiunge il timeout + if (Auth::isBrute()) { + $response['timeout'] = Auth::getBruteTimeout(); + } + } + + return $response; + } +} diff --git a/update/2_4_16.sql b/update/2_4_16.sql index 7dd463bfa..cc69a14ba 100644 --- a/update/2_4_16.sql +++ b/update/2_4_16.sql @@ -125,6 +125,7 @@ ALTER TABLE `dt_causalet` ADD `is_importabile` BOOLEAN DEFAULT TRUE AFTER `descr -- Aggiunta risorse dedicate all'applicazione INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `enabled`) VALUES +(NULL, 'app-v1', 'create', 'login', 'Modules\\Utenti\\API\\AppV1\\Login', '1'), (NULL, 'app-v1', 'retrieve', 'anagrafiche', 'Modules\\Anagrafiche\\API\\AppV1\\Anagrafiche', '1'), (NULL, 'app-v1', 'retrieve', 'anagrafiche-cleanup', 'Modules\\Anagrafiche\\API\\AppV1\\Anagrafiche', '1'), (NULL, 'app-v1', 'retrieve', 'anagrafica', 'Modules\\Anagrafiche\\API\\AppV1\\Anagrafiche', '1'),