From 61199687d351364a83ab5e40be03dedf9a33a76a Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Thu, 7 Mar 2024 16:04:52 +0100 Subject: [PATCH] Allineamento add categorie articoli --- modules/articoli/src/Categoria.php | 30 +++++++++++-- modules/categorie_articoli/actions.php | 59 +++++++++---------------- modules/categorie_articoli/add.php | 6 +-- modules/categorie_articoli/init.php | 3 ++ modules/categorie_articoli/row-list.php | 29 ++++++------ 5 files changed, 69 insertions(+), 58 deletions(-) diff --git a/modules/articoli/src/Categoria.php b/modules/articoli/src/Categoria.php index 8fe14eb46..c5e290bf1 100755 --- a/modules/articoli/src/Categoria.php +++ b/modules/articoli/src/Categoria.php @@ -31,11 +31,11 @@ class Categoria extends Model protected $table = 'mg_categorie'; protected static $parent_identifier = 'parent'; - public static function build($nome) + public static function build($nota, $colore) { $model = new static(); - - $model->nome = $nome; + $model->nota = $nota; + $model->colore = $colore; $model->save(); return $model; @@ -75,4 +75,28 @@ class Categoria extends Model ->where('id_lang', '=', setting('Lingua')) ->first(); } + + /** + * Imposta l'attributo name della categoria. + */ + public function setNameAttribute($value) + { + $table = database()->table($this->table.'_lang'); + + $translated = $table + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')); + + if ($translated->count() > 0) { + $translated->update([ + 'name' => $value + ]); + } else { + $table->insert([ + 'id_record' => $this->id, + 'id_lang' => setting('Lingua'), + 'name' => $value + ]); + } + } } diff --git a/modules/categorie_articoli/actions.php b/modules/categorie_articoli/actions.php index accf9afa4..89c3764e1 100755 --- a/modules/categorie_articoli/actions.php +++ b/modules/categorie_articoli/actions.php @@ -18,6 +18,7 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Articoli\Categoria; switch (filter('op')) { case 'update': @@ -27,20 +28,14 @@ switch (filter('op')) { $id_original = filter('id_original') ?: null; if (isset($nome) && isset($nota) && isset($colore)) { - $database->table('mg_categorie') - ->where('id', '=', $id_record) - ->update([ - 'nota' => $nota, - 'colore' => $colore, - ]); - - $database->table('mg_categorie_lang') - ->where('id_record', '=', $id_record) - ->update([ - 'name' => $nome, - ]); + $categoria->nota = $nota; + $categoria->colore = $colore; + $categoria->parent = $id_original ?: null; + $categoria->name = $nome; + $categoria->save(); flash()->info(tr('Salvataggio completato!')); + } else { flash()->error(tr('Ci sono stati alcuni errori durante il salvataggio!')); } @@ -58,44 +53,30 @@ switch (filter('op')) { $nome = filter('nome'); $nota = filter('nota'); $colore = filter('colore'); - $id_original = filter('id_original') ?: null; - // Ricerca corrispondenze con stesso nome - $corrispondenze = $database->table('mg_categorie') - ->join('mg_categorie_lang', 'mg_categorie.id', '=', 'mg_categorie_lang.id_record') - ->where('name', '=', $nome); + $categoria_new = Categoria::where('id', "=", (new Categoria())->getByName($nome)->id_record); if (!empty($id_original)) { - $corrispondenze = $corrispondenze->where('parent', '=', $id_original); + $categoria_new = $categoria_new->where('parent', '=', $id_original); } else { - $corrispondenze = $corrispondenze->whereNull('parent'); + $categoria_new = $categoria_new->whereNull('parent'); } - $corrispondenze = $corrispondenze->get(); + $categoria_new = $categoria_new->first(); - // Eventuale creazione del nuovo record - if ($corrispondenze->count() == 0) { - $id_record = $database->table('mg_categorie') - ->insertGetId([ - 'nota' => $nota, - 'colore' => $colore, - 'parent' => $id_original, - ]); - - $database->table('mg_categorie_lang') - ->insertGetId([ - 'id_record' => $id_record, - 'name' => $nome, - 'id_lang' => setting('Lingua'), - ]); + if (!empty($categoria_new)){ + flash()->error(tr('Questo nome è già stato utilizzato per un altra categoria.')); + } else { + $categoria = Categoria::build($nota, $colore); + $id_record= $dbo->lastInsertedID(); + $categoria->parent = $id_original; + $categoria->name = $nome; + $categoria->save(); flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ '_TYPE_' => 'categoria', ])); - } else { - $id_record = $corrispondenze->first()->id; - flash()->error(tr('Esiste già una categoria con lo stesso nome!')); } - + if (isAjaxRequest()) { echo json_encode(['id' => $id_record, 'text' => $nome]); } else { diff --git a/modules/categorie_articoli/add.php b/modules/categorie_articoli/add.php index 28e3165a1..47a226684 100755 --- a/modules/categorie_articoli/add.php +++ b/modules/categorie_articoli/add.php @@ -40,17 +40,17 @@ if (isset($id_original)) {
- {[ "type": "text", "label": "", "name": "nome", "required": 1, "value": "$nome$" ]} + {[ "type": "text", "label": "", "name": "nome", "required": 1, "value": "name; ?>" ]}
- {[ "type": "text", "label": "", "name": "colore", "id": "colore_", "class": "colorpicker text-center", "value": "$colore$", "extra": "maxlength=\"7\"", "icon-after": "
" ]} + {[ "type": "text", "label": "", "name": "colore", "id": "colore_", "class": "colorpicker text-center", "value": "colore; ?>", "extra": "maxlength=\"7\"", "icon-after": "
" ]}
- {[ "type": "textarea", "label": "", "name": "nota", "value": "$nota$" ]} + {[ "type": "textarea", "label": "", "name": "nota", "value": "nota; ?>" ]}
diff --git a/modules/categorie_articoli/init.php b/modules/categorie_articoli/init.php index 413b6de26..a08d8948a 100755 --- a/modules/categorie_articoli/init.php +++ b/modules/categorie_articoli/init.php @@ -18,7 +18,10 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Articoli\Categoria; if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `mg_categorie` LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id`=`mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `mg_categorie`.`id`='.prepare($id_record)); + + $categoria = Categoria::find($id_record); } diff --git a/modules/categorie_articoli/row-list.php b/modules/categorie_articoli/row-list.php index 86dd910a3..22d16365b 100755 --- a/modules/categorie_articoli/row-list.php +++ b/modules/categorie_articoli/row-list.php @@ -18,21 +18,24 @@ */ include_once __DIR__.'/../../core.php'; +use Modules\Articoli\Categoria; +use Modules\Articoli\Articolo; -$subcategorie = $dbo->fetchArray('SELECT * FROM `mg_categorie` LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id`=`mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `parent`='.prepare($id_record).' ORDER BY `name` ASC '); +$subcategorie = Categoria::where('parent', '=', $id_record)->get(); foreach ($subcategorie as $sub) { - $n_articoli = $dbo->fetchNum('SELECT * FROM `mg_articoli` LEFT JOIN `mg_articoli_lang` ON (`mg_articoli`.`id` = `mg_articoli_lang`.`id_record` AND `mg_articoli_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `id_sottocategoria`='.prepare($sub['id']).' AND deleted_at IS NULL'); + $n_articoli = Articolo::where('id_sottocategoria', '=', $sub['id'])->count(); + echo ' - - '.$sub['name'].' - '.$sub['colore'].' - '.$sub['nota'].' - - - - - - - '; + + '.$sub->name.' + '.$sub->colore.' + '.$sub->nota.' + + + + + + + '; }