From d17a3951f487e3b285e17c4a66cd3782c4bf2fa9 Mon Sep 17 00:00:00 2001 From: valentina Date: Fri, 28 Nov 2025 16:56:18 +0100 Subject: [PATCH 1/3] fix: salvataggio allegati --- modules/interventi/actions.php | 8 ++------ src/API/App/v1/Interventi.php | 9 +-------- src/Models/Upload.php | 4 +--- src/Models/User.php | 4 +--- 4 files changed, 5 insertions(+), 20 deletions(-) diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 119f189ec..cf4592c7e 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -971,9 +971,7 @@ // Salvataggio firma $data = explode(',', post('firma_base64')); $img = getImageManager()->read(base64_decode($data[1])); - $img->resize(680, 202, function ($constraint) { - $constraint->aspectRatio(); - }); + $img->scaleDown(680, 202); if (setting('Sistema di firma') == 'Tavoletta Wacom') { $img->brightness((float) setting('Luminosità firma Wacom')); @@ -1068,9 +1066,7 @@ // Salvataggio firma $data = explode(',', post('firma_base64')); $img = getImageManager()->read(base64_decode($data[1])); - $img->resize(680, 202, function ($constraint) { - $constraint->aspectRatio(); - }); + $img->scaleDown(680, 202); $encoded_image = $img->toJpeg(); $file_content = $encoded_image->toString(); diff --git a/src/API/App/v1/Interventi.php b/src/API/App/v1/Interventi.php index 2cb6e4806..e6764fb39 100755 --- a/src/API/App/v1/Interventi.php +++ b/src/API/App/v1/Interventi.php @@ -373,14 +373,7 @@ protected function salvaFirma($firma_base64, $id_intervento) { $data = explode(',', (string) $firma_base64); $img = getImageManager()->read(base64_decode($data[1])); - $img->resize(680, 202, function ($constraint) { - $constraint->aspectRatio(); - }); - - if (setting('Sistema di firma') == 'Tavoletta Wacom') { - $img->brightness((float) setting('Luminosità firma Wacom')); - $img->contrast((float) setting('Contrasto firma Wacom')); - } + $img->scaleDown(680, 202); $encoded_image = $img->toJpeg(); $file_content = $encoded_image->toString(); diff --git a/src/Models/Upload.php b/src/Models/Upload.php index ff0e40f2d..66b4eeddc 100755 --- a/src/Models/Upload.php +++ b/src/Models/Upload.php @@ -589,9 +589,7 @@ protected static function generateThumbnails($upload) $img = getImageManager()->read($filepath); - $img->resize(600, null, function ($constraint) { - $constraint->aspectRatio(); - }); + $img->scaleDown(600, null); $img->save(slashes($directory.'/'.$info['filename'].'_thumb600.'.$info['extension'])); $img->scale(250, null); diff --git a/src/Models/User.php b/src/Models/User.php index 91f56aeff..ef1b7ed58 100755 --- a/src/Models/User.php +++ b/src/Models/User.php @@ -171,9 +171,7 @@ public function setPhotoAttribute($value) $file = base_dir().'/files/temp_photo.'.$info['extension']; // Ridimensionamento - $img = getImageManager()->read($filepath)->resize(100, 100, function ($constraint) { - $constraint->aspectRatio(); - }); + $img = getImageManager()->read($filepath)->scaleDown(100, 100); $img->save(slashes($file)); // Aggiunta nuova foto From 546d39e6812b3b48244ef2bca23fff4ae662d3fa Mon Sep 17 00:00:00 2001 From: Matteo Date: Fri, 28 Nov 2025 18:29:06 +0100 Subject: [PATCH 2/3] feat: aggiunta api per la sincronizzazione dei movimenti fatti dal tecnico --- modules/articoli/src/Articolo.php | 5 ++- src/API/App/v1/MovimentiManuali.php | 66 +++++++++++++++++++++++++++-- update/2_10.sql | 5 ++- 3 files changed, 69 insertions(+), 7 deletions(-) diff --git a/modules/articoli/src/Articolo.php b/modules/articoli/src/Articolo.php index 162c572cc..e8fa886c4 100755 --- a/modules/articoli/src/Articolo.php +++ b/modules/articoli/src/Articolo.php @@ -168,14 +168,15 @@ public function registra($qta, $descrizone = null, $data = null, $manuale = fals // Movimento il magazzino solo se l'articolo non è un servizio if (empty($this->servizio)) { // Registrazione della movimentazione - database()->insert('mg_movimenti', array_merge($array, [ + // I valori in $array hanno priorità (es. idutente passato dall'API) + database()->insert('mg_movimenti', array_merge([ 'idarticolo' => $this->id, 'qta' => $qta, 'movimento' => $descrizone, 'data' => $data, 'manuale' => $manuale, 'idutente' => $user->id, - ])); + ], $array)); } $id = database()->lastInsertedID(); diff --git a/src/API/App/v1/MovimentiManuali.php b/src/API/App/v1/MovimentiManuali.php index 4a4ee1b29..256269468 100644 --- a/src/API/App/v1/MovimentiManuali.php +++ b/src/API/App/v1/MovimentiManuali.php @@ -28,28 +28,86 @@ class MovimentiManuali extends AppResource { public function getCleanupData($last_sync_at) { - return []; + // Recupera l'ID utente loggato + $user = auth_osm()->getUser(); + $id_utente = $user->id; + + // Restituisce i movimenti eliminati o non più appartenenti all'utente + $query = 'SELECT `mg_movimenti`.`id` + FROM `mg_movimenti` + WHERE `mg_movimenti`.`idutente` = '.prepare($id_utente); + + if ($last_sync_at) { + $query .= ' AND `mg_movimenti`.`updated_at` > '.prepare($last_sync_at); + } + + $records = database()->fetchArray($query); + $ids = array_column($records, 'id'); + + return $this->getMissingIDs('mg_movimenti', 'id', $last_sync_at, $ids); } public function getModifiedRecords($last_sync_at) { - return []; + // Recupera l'ID utente loggato + $user = auth_osm()->getUser(); + $id_utente = $user->id; + + // Calcola le date dell'ultimo giorno (00:00 - 23:59) + $oggi = Carbon::now(); + $inizio_giorno = $oggi->copy()->startOfDay()->format('Y-m-d H:i:s'); + $fine_giorno = $oggi->copy()->endOfDay()->format('Y-m-d H:i:s'); + + // Query per recuperare i movimenti dell'utente loggato nell'ultimo giorno + $query = 'SELECT `mg_movimenti`.`id`, `mg_movimenti`.`updated_at` + FROM `mg_movimenti` + WHERE `mg_movimenti`.`idutente` = '.prepare($id_utente).' + AND `mg_movimenti`.`data` BETWEEN '.prepare($inizio_giorno).' AND '.prepare($fine_giorno); + + $records = database()->fetchArray($query); + + return $this->mapModifiedRecords($records); } public function retrieveRecord($id) { - return []; + // Recupera l'ID utente loggato per sicurezza + $user = auth_osm()->getUser(); + $id_utente = $user->id; + + // Query per recuperare il dettaglio del movimento + $query = 'SELECT + `mg_movimenti`.`id`, + `mg_movimenti`.`idarticolo` AS id_articolo, + `mg_movimenti`.`qta`, + `mg_movimenti`.`movimento` AS descrizione, + `mg_movimenti`.`data`, + `mg_movimenti`.`idsede` AS id_sede_azienda, + `mg_movimenti`.`idutente` AS id_utente, + `mg_movimenti`.`manuale` + FROM + `mg_movimenti` + LEFT JOIN `mg_articoli` ON `mg_movimenti`.`idarticolo` = `mg_articoli`.`id` + LEFT JOIN `mg_articoli_lang` ON (`mg_articoli`.`id` = `mg_articoli_lang`.`id_record` AND `mg_articoli_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).') + WHERE + `mg_movimenti`.`id` = '.prepare($id).' + AND `mg_movimenti`.`idutente` = '.prepare($id_utente); + + $record = database()->fetchOne($query); + + return $record; } public function createRecord($data) { $articolo = Articolo::find($data['id_articolo']); - $data_movimento = new Carbon($data['created_at']); + $data_movimento = new Carbon($data['data']); $id_sede = isset($data['id_sede_azienda']) && $data['id_sede_azienda'] !== null ? $data['id_sede_azienda'] : 0; $id_movimento = $articolo->movimenta($data['qta'], $data['descrizione'], $data_movimento, true, [ 'idsede' => $id_sede, + 'idutente' => auth_osm()->getUser()->id, ]); return [ diff --git a/update/2_10.sql b/update/2_10.sql index 59a50809d..4962a6e71 100644 --- a/update/2_10.sql +++ b/update/2_10.sql @@ -200,4 +200,7 @@ ALTER TABLE `zz_modules` DROP COLUMN `use_notes`; ALTER TABLE `zz_modules` DROP COLUMN `use_checklists`; -- Aggiunta colonna session_token per gestione sessione singola -ALTER TABLE `zz_users` ADD `session_token` VARCHAR(64) NULL DEFAULT NULL AFTER `password`; \ No newline at end of file +ALTER TABLE `zz_users` ADD `session_token` VARCHAR(64) NULL DEFAULT NULL AFTER `password`; + +-- Aggiunta risorsa API per la gestione dei movimenti manuali +INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `enabled`, `created_at`, `updated_at`) VALUES (NULL, 'app-v1', 'retrieve', 'movimento-manuale', 'API\\App\\v1\\MovimentiManuali', '1', NULL, NULL) From 2a552fdb92f1ee382f0bba3a34b38d74e7e8d585 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 03:22:34 +0000 Subject: [PATCH 3/3] build(deps-dev): update phpunit/phpunit requirement --- updated-dependencies: - dependency-name: phpunit/phpunit dependency-version: 12.4.4 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 composer.json diff --git a/composer.json b/composer.json old mode 100755 new mode 100644 index e55889998..2c3ab3659 --- a/composer.json +++ b/composer.json @@ -83,7 +83,7 @@ "laravel/sail": "^1.41", "mockery/mockery": "^1.6", "nunomaduro/collision": "^8.6", - "phpunit/phpunit": "^10|^11" + "phpunit/phpunit": "^12.4.4" }, "autoload": { "psr-4": {