Skip to content

Commit d34deb5

Browse files
feat: associazione categorie file a template per invio email con allegati da includere
1 parent b577590 commit d34deb5

7 files changed

Lines changed: 39 additions & 41 deletions

File tree

actions.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
if (in_array(strtolower($file_extension), $allowed_extension) && $_FILES['upload']['size'] < $max_size) {
6868
$upload = Uploads::upload($_FILES['upload'], [
6969
'name' => filter('nome_allegato'),
70-
'category' => filter('categoria'),
70+
'id_category' => filter('id_category') ?: null,
7171
'id_module' => Module::where('name', 'Gestione documentale')->first()->id,
7272
'id_record' => $id_record,
7373
]);

include/modifica_allegato.php

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -58,43 +58,6 @@
5858
</button>
5959
</div>
6060
</div>
61-
</form>';
61+
</form>
6262
63-
// Elenco categoria disponibili per l'autocompletamento
64-
$where = '`id_module` '.(!empty($allegato['id_module']) && empty($allegato['id_plugin']) ? '= '.prepare($allegato['id_module']) : 'IS NULL').' AND `id_plugin` '.(!empty($allegato['id_plugin']) ? '= '.prepare($allegato['id_plugin']) : 'IS NULL').'';
65-
$categories = $dbo->fetchArray('SELECT DISTINCT(BINARY `category`) AS `category` FROM `zz_files` WHERE '.$where.' ORDER BY `category`');
66-
$source = array_clean(array_column($categories, 'category'));
67-
68-
echo '
69-
<script>
70-
var categorie = '.json_encode($source).';
71-
72-
// Auto-completamento categoria
73-
$(document).ready(function () {
74-
const input = $("#modifica-allegato #categoria_allegato")[0];
75-
76-
autocomplete({
77-
minLength: 0,
78-
input: input,
79-
emptyMsg: globals.translations.noResults,
80-
fetch: function (text, update) {
81-
text = text.toLowerCase();
82-
const suggestions = categorie.filter(n => n.toLowerCase().startsWith(text));
83-
84-
// Trasformazione risultati in formato leggibile
85-
const results = suggestions.map(function (result) {
86-
return {
87-
label: result,
88-
value: result
89-
}
90-
});
91-
92-
update(results);
93-
},
94-
onSelect: function (item) {
95-
input.value = item.label;
96-
},
97-
});
98-
});
99-
</script>
10063
<script>$(document).ready(init)</script>';

mail.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020

2121
use Models\Module;
22+
use Models\Upload;
2223
use Modules\Emails\Template;
2324

2425
include_once __DIR__.'/core.php';
@@ -161,6 +162,15 @@
161162
$uploads = array_column($uploads, 'id');
162163
}
163164

165+
$categories = $template->categories;
166+
foreach ($categories as $category) {
167+
$files = Upload::where('id_category', $category->id)->where('id_module', $id_module)->where('id_record', $id_record)->get();
168+
$uploads = array_merge($uploads, $files->pluck('id')->toArray());
169+
$files = Upload::where('id_category', $category->id)->where('id_module', Module::where('name', 'Anagrafiche')->first()->id)->where('id_record', setting('Azienda predefinita'))->get();
170+
$uploads = array_merge($uploads, $files->pluck('id')->toArray());
171+
$uploads = array_unique($uploads);
172+
}
173+
164174
// Allegati
165175
echo '
166176

modules/emails/actions.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,13 @@
7171
}
7272
}
7373

74+
$categories[] = post('idcategories');
75+
foreach ($categories as $category) {
76+
if (!empty($category)) {
77+
$dbo->sync('em_files_categories_template', ['id_template' => $id_record], ['id_category' => $category]);
78+
}
79+
}
80+
7481
flash()->info(tr('Informazioni salvate correttamente!'));
7582

7683
break;

modules/emails/edit.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,28 @@
109109
$selected_mansioni = $dbo->fetchArray('SELECT idmansione FROM em_mansioni_template WHERE id_template = '.prepare($id_record));
110110
$selected_mansioni = array_column($selected_mansioni, 'idmansione');
111111

112+
$selected_categories = $dbo->fetchArray('SELECT id_category FROM em_files_categories_template WHERE id_template = '.prepare($id_record));
113+
$selected_categories = array_column($selected_categories, 'id_category');
114+
112115
echo '
113116
114117
<div class="row">
115118
<div class="col-md-12">
116119
{[ "type": "select", "multiple": "1", "label": "'.tr('Stampe').'", "name": "prints[]", "value": "'.implode(',', $selected_prints).'", "values": "query=SELECT `zz_prints`.`id`, `zz_prints_lang`.`title` AS text FROM `zz_prints` LEFT JOIN `zz_prints_lang` ON (`zz_prints`.`id` = `zz_prints_lang`.`id_record` AND `zz_prints_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `id_module` = '.prepare($record['id_module']).' AND `enabled`=1 AND `is_record`=1" ]}
117120
</div>
118-
</div>
121+
</div>';
119122

123+
echo '
120124
<div class="row">
121125
<div class="col-md-12">
122126
{[ "type": "select", "multiple": "1", "label": "'.tr('Mansioni').'", "name": "idmansioni[]", "value": "'.implode(',', $selected_mansioni).'", "ajax-source": "mansioni" ]}
123127
</div>
128+
</div>
129+
130+
<div class="row">
131+
<div class="col-md-12">
132+
{[ "type": "select", "multiple": "1", "label": "'.tr('Categorie file da allegare').'", "name": "idcategories[]", "value": "'.implode(',', $selected_categories).'", "ajax-source": "categorie-files" ]}
133+
</div>
124134
</div>';
125135

126136
?>

modules/emails/src/Template.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use Illuminate\Database\Eloquent\SoftDeletes;
2626
use Models\Module;
2727
use Models\PrintTemplate;
28+
use Modules\CategorieFiles\Categoria;
2829
use Traits\LocalPoolTrait;
2930
use Traits\RecordTrait;
3031

@@ -81,6 +82,11 @@ public function prints()
8182
return $this->belongsToMany(PrintTemplate::class, 'em_print_template', 'id_template', 'id_print');
8283
}
8384

85+
public function categories()
86+
{
87+
return $this->belongsToMany(Categoria::class, 'em_files_categories_template', 'id_template', 'id_category');
88+
}
89+
8490
public function translations()
8591
{
8692
return $this->hasMany(TemplateLang::class, 'id');

update/2_8.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,4 +472,6 @@ INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
472472
('2', (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = @id_module), 'id');
473473

474474
CREATE TABLE `zz_files_categories` (`id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) NOT NULL , `deleted_at` TIMESTAMP NULL , PRIMARY KEY (`id`));
475-
ALTER TABLE `zz_files` ADD `id_category` INT NULL AFTER `category`;
475+
ALTER TABLE `zz_files` ADD `id_category` INT NULL AFTER `category`;
476+
477+
CREATE TABLE `em_files_categories_template` (`id` INT NOT NULL AUTO_INCREMENT , `id_category` INT NOT NULL , `id_template` INT NOT NULL , PRIMARY KEY (`id`))

0 commit comments

Comments
 (0)