From 82e49252691d80ed2809d9703f92a234e2f1d362 Mon Sep 17 00:00:00 2001 From: valentina Date: Wed, 16 Oct 2024 16:43:58 +0200 Subject: [PATCH] refactor: aggiunta classe marchi e allineamento codice --- modules/articoli/header.php | 3 +- modules/articoli/src/Articolo.php | 5 +++ modules/articoli/src/Marchio.php | 54 +++++++++++++++++++++++++++++++ modules/marchi/actions.php | 50 +++++++++++++++++++++------- modules/marchi/add.php | 2 +- modules/marchi/edit.php | 10 +++--- modules/marchi/init.php | 3 ++ 7 files changed, 108 insertions(+), 19 deletions(-) create mode 100644 modules/articoli/src/Marchio.php diff --git a/modules/articoli/header.php b/modules/articoli/header.php index 103ac1347..06ff6390e 100644 --- a/modules/articoli/header.php +++ b/modules/articoli/header.php @@ -37,10 +37,9 @@ echo '
'; -$marchio = $dbo->fetchOne('SELECT `link`, `name` FROM mg_marchi WHERE id = '.$articolo->id_marchio); // Articolo echo ' - '.($articolo->id_marchio ? '

'.($marchio['link']? ' '.$marchio['name'].'' : $marchio['name']).'

' : ''). + '.($articolo->id_marchio ? '

'.($articolo->marchio->name? ' '.$articolo->marchio->name.'' : $articolo->marchio->name).'

' : ''). ($articolo->id_categoria ? '

'.$articolo->categoria->getTranslation('title') : '').($articolo->id_sottocategoria ? ' '.$articolo->sottocategoria->getTranslation('title') : '').'

'.$articolo->getTranslation('title').' '.($articolo->attivo ? '' : ' ').'

'.$articolo->codice.' '.($articolo->barcode ? ' - '.$articolo->barcode.'

' : '').'

diff --git a/modules/articoli/src/Articolo.php b/modules/articoli/src/Articolo.php index 017c07887..485a40b46 100755 --- a/modules/articoli/src/Articolo.php +++ b/modules/articoli/src/Articolo.php @@ -330,6 +330,11 @@ class Articolo extends Model return $this->belongsTo(Categoria::class, 'id_sottocategoria'); } + public function marchio() + { + return $this->belongsTo(Marchio::class, 'id_marchio'); + } + public function dettaglioFornitori() { return $this->hasMany(DettaglioFornitore::class, 'id_articolo'); diff --git a/modules/articoli/src/Marchio.php b/modules/articoli/src/Marchio.php new file mode 100644 index 000000000..4c07ab905 --- /dev/null +++ b/modules/articoli/src/Marchio.php @@ -0,0 +1,54 @@ +. + */ + +namespace Modules\Articoli; + +use Common\SimpleModelTrait; +use Illuminate\Database\Eloquent\Model; +use Traits\HierarchyTrait; +use Traits\RecordTrait; + +class Marchio extends Model +{ + use SimpleModelTrait; + use HierarchyTrait; + use RecordTrait; + + protected $table = 'mg_marchi'; + + + public static function build($nome = null) + { + $model = new static(); + $model->name = $nome; + $model->save(); + + return $model; + } + + public function articoli() + { + return $this->hasMany(Articolo::class, 'id_marchio'); + } + + public function getModuleAttribute() + { + return 'Marchi'; + } +} diff --git a/modules/marchi/actions.php b/modules/marchi/actions.php index 7b784e36c..71a620087 100644 --- a/modules/marchi/actions.php +++ b/modules/marchi/actions.php @@ -19,27 +19,55 @@ include_once __DIR__.'/../../core.php'; +use Modules\Articoli\Marchio; + switch (post('op')) { // Aggiorno informazioni di base marchio case 'update': - $dbo->update('mg_marchi', [ - 'name' => post('name'), - 'link' => post('link'), - ], ['id' => $id_record]); + $nome = filter('name'); + $link = filter('link'); - flash()->info(tr('Informazioni salvate correttamente!')); + $marchio_new = Marchio::where('name', '=', $nome)->first(); + + if (!empty($marchio_new)) { + flash()->error(tr('Questo nome è già stato utilizzato per un altro marchio.')); + } else { + $marchio = Marchio::find($id_record); + $marchio->name = $nome; + $marchio->link = $link; + $marchio->save(); + + flash()->info(tr('Marchio aggiornato!')); + } + + if (isAjaxRequest()) { + echo json_encode(['id' => $id_record, 'text' => $nome]); + } break; + // Aggiungo marchio case 'add': - $dbo->insert('mg_marchi', [ - 'name' => post('name'), - 'link' => post('link'), - ]); - $id_record = $dbo->lastInsertedID(); + $nome = filter('name'); + $link = filter('link'); - flash()->info(tr('Aggiunto nuovo marchio!')); + $marchio_new = Marchio::where('name', '=', $nome)->first(); + + if (!empty($marchio_new)) { + flash()->error(tr('Questo nome è già stato utilizzato per un altro marchio.')); + } else { + $marchio = Marchio::build($nome); + $id_record = $dbo->lastInsertedID(); + $marchio->link = $link; + $marchio->save(); + + flash()->info(tr('Aggiunto nuovo marchio')); + } + + if (isAjaxRequest()) { + echo json_encode(['id' => $id_record, 'text' => $nome]); + } break; diff --git a/modules/marchi/add.php b/modules/marchi/add.php index f19d63ee9..741e69a39 100644 --- a/modules/marchi/add.php +++ b/modules/marchi/add.php @@ -27,7 +27,7 @@ $id_anagrafica = filter('id_anagrafica');
- {[ "type": "text", "label": "", "name": "name", "required": 1, "validation": "name" ]} + {[ "type": "text", "label": "", "name": "name", "required": 1, "validation": "name" ]}
{[ "type": "text", "label": "", "name": "link", "value":"$link$"]} diff --git a/modules/marchi/edit.php b/modules/marchi/edit.php index 26fde7db6..3e9bb93e6 100644 --- a/modules/marchi/edit.php +++ b/modules/marchi/edit.php @@ -45,15 +45,15 @@ include_once __DIR__.'/../../core.php'; fetchArray('SELECT `mg_articoli`.`id`, CONCAT(`mg_articoli`.`codice`, " - ", `mg_articoli_lang`.`title`) AS `descrizione` FROM `mg_articoli` INNER JOIN mg_articoli_lang ON (`mg_articoli_lang`.`id_record` = `mg_articoli`.`id` AND `mg_articoli_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `mg_articoli`.`id_marchio` = '.prepare($id_record)); +$articoli = $marchio->articoli; $class = ''; -if (!empty($elementi)) { +if (!empty($articoli)) { echo '

'.tr('Articoli collegati: _NUM_', [ - '_NUM_' => count($elementi), + '_NUM_' => count($articoli), ]).'

@@ -62,9 +62,9 @@ if (!empty($elementi)) {
    '; - foreach ($elementi as $elemento) { + foreach ($articoli as $articolo) { echo ' -
  • '.Modules::link('Articoli', $elemento['id'], $elemento['descrizione']).'
  • '; +
  • '.Modules::link('Articoli', $articolo->id, $articolo->codice.' - '.$articolo->getTranslation('title')).'
  • '; } $class = 'disabled'; diff --git a/modules/marchi/init.php b/modules/marchi/init.php index caa7277c1..97058c482 100644 --- a/modules/marchi/init.php +++ b/modules/marchi/init.php @@ -18,7 +18,10 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Articoli\Marchio; if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM mg_marchi WHERE id='.prepare($id_record)); + + $marchio = Marchio::find($id_record); }