1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-24 07:17:55 +01:00

Fix rimozione Interventi via API

This commit is contained in:
Thomas Zilio 2020-08-06 16:22:32 +02:00
parent 874a9d528f
commit 97a3e9f9de
3 changed files with 20 additions and 1 deletions

View File

@ -3,6 +3,7 @@
namespace Modules\Interventi; namespace Modules\Interventi;
use Common\Document; use Common\Document;
use Illuminate\Database\Eloquent\SoftDeletes;
use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Anagrafica;
use Modules\Contratti\Contratto; use Modules\Contratti\Contratto;
use Modules\Preventivi\Preventivo; use Modules\Preventivi\Preventivo;
@ -14,6 +15,7 @@ use Util\Generator;
class Intervento extends Document class Intervento extends Document
{ {
use ReferenceTrait; use ReferenceTrait;
//use SoftDeletes;
use RecordTrait; use RecordTrait;

View File

@ -216,21 +216,35 @@ abstract class AppResource extends Resource implements RetrieveInterface, Create
// Ottiene il valore successivo della colonna di tipo AUTO_INCREMENT // Ottiene il valore successivo della colonna di tipo AUTO_INCREMENT
$next_autoincrement = $database->fetchOne('SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '.prepare($table_name).' AND TABLE_SCHEMA = '.prepare($db_name))['AUTO_INCREMENT']; $next_autoincrement = $database->fetchOne('SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '.prepare($table_name).' AND TABLE_SCHEMA = '.prepare($db_name))['AUTO_INCREMENT'];
/*
// Ottiene l'ultimo record con data precedente a quella impostata // Ottiene l'ultimo record con data precedente a quella impostata
$last_id = null; $last_id = null;
if ($last_sync_at) { if ($last_sync_at) {
$last_record = $database->fetchOne('SELECT '.$column.' AS id FROM '.$table_name.' WHERE created_at <= '.prepare($last_sync_at).' ORDER BY '.$column.' DESC'); $last_record = $database->fetchOne('SELECT '.$column.' AS id FROM '.$table_name.' WHERE created_at <= '.prepare($last_sync_at).' ORDER BY '.$column.' DESC');
$last_id = $last_record['id']; $last_id = $last_record['id'];
} }
*/
// Ottiene i vuoti all'interno della sequenza AUTO_INCREMENT // Ottiene i vuoti all'interno della sequenza AUTO_INCREMENT
$query = 'SELECT (t1.'.$column.' + 1) AS start, (SELECT MIN(t3.'.$column.') - 1 FROM '.$table_name.' t3 WHERE t3.'.$column.' > t1.'.$column.') AS end FROM '.$table_name.' t1 WHERE NOT EXISTS (SELECT t2.'.$column.' FROM '.$table_name.' t2 WHERE t2.'.$column.' = t1.'.$column.' + 1)'; $query = 'SELECT (t1.'.$column.' + 1) AS start, (SELECT MIN(t3.'.$column.') - 1 FROM '.$table_name.' t3 WHERE t3.'.$column.' > t1.'.$column.') AS end FROM '.$table_name.' t1 WHERE NOT EXISTS (SELECT t2.'.$column.' FROM '.$table_name.' t2 WHERE t2.'.$column.' = t1.'.$column.' + 1)';
/*
if ($last_id) { if ($last_id) {
$query .= ' AND t1.'.$column.' >= '.prepare($last_id); $query .= ' AND t1.'.$column.' >= '.prepare($last_id);
} }
*/
$query .= ' ORDER BY start'; $query .= ' ORDER BY start';
$steps = $database->fetchArray($query); $steps = $database->fetchArray($query);
// Gestione dell'eliminazione dei primi record della tabella
$exists_first = $database->fetchNum('SELECT * FROM '.$table_name.' WHERE '.$column.' = 1');
if (!$exists_first) {
$first = $database->fetchOne('SELECT MIN('.$column.') AS min FROM '.$table_name);
$steps[] = [
'start' => 1,
'end' => $first['min'] - 1,
];
}
$total = []; $total = [];
foreach ($steps as $step) { foreach ($steps as $step) {
if ($step['end'] == null) { if ($step['end'] == null) {

View File

@ -66,7 +66,10 @@ class Interventi extends AppResource
':id_tecnico_q2' => $id_tecnico, ':id_tecnico_q2' => $id_tecnico,
]); ]);
return array_column($records, 'id'); $interventi = array_column($records, 'id');
$mancanti = $this->getMissingIDs('in_interventi', 'id', $last_sync_at);
return array_merge($mancanti, $interventi);
} }
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)