Skip to content

Commit e825f25

Browse files
feat: gestione allegati mail predefiniti per invii automatici
1 parent 2f39006 commit e825f25

4 files changed

Lines changed: 73 additions & 7 deletions

File tree

actions.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@
368368

369369
// Rimozione allegati predefiniti
370370
$mail->resetPrints();
371+
$mail->resetUploads();
371372

372373
// Destinatari
373374
$receivers = array_clean(post('destinatari'));

mail.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,10 @@
162162
$uploads = array_column($uploads, 'id');
163163
}
164164

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());
165+
// Ottieni gli allegati dalle categorie associate al template
166+
$template_uploads = $template->uploads;
167+
if (!empty($template_uploads)) {
168+
$uploads = array_merge($uploads, $template_uploads->pluck('id')->toArray());
171169
$uploads = array_unique($uploads);
172170
}
173171

modules/emails/src/Mail.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ public function addUpload($file_id, $name = null)
7373
$this->uploads()->attach($file_id, ['id_email' => $this->id, 'name' => $name]);
7474
}
7575

76+
public function resetUploads()
77+
{
78+
$this->uploads()->detach();
79+
}
80+
7681
/**
7782
* Aggiunge una stampa alla notifica.
7883
*
@@ -267,10 +272,16 @@ protected function resetFromTemplate()
267272
$this->addReceiver($template['bcc'], 'bcc');
268273
}
269274

270-
// Incluesione stampe predefinite
275+
// Inclusione stampe predefinite
271276
$prints = $template->prints;
272277
foreach ($prints as $print) {
273278
$this->addPrint($print['id']);
274279
}
280+
281+
// Inclusione allegati predefiniti
282+
$uploads = $template->uploads;
283+
foreach ($uploads as $upload) {
284+
$this->addUpload($upload['id']);
285+
}
275286
}
276287
}

modules/emails/src/Template.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,62 @@ public function categories()
8686
{
8787
return $this->belongsToMany(Categoria::class, 'em_files_categories_template', 'id_template', 'id_category');
8888
}
89+
90+
/**
91+
* Accessor che ottiene dinamicamente gli uploads in base alle categorie selezionate.
92+
* Questo metodo viene chiamato quando si accede a $template->uploads come proprietà.
93+
*
94+
* @return \Illuminate\Support\Collection
95+
*/
96+
public function getUploadsAttribute()
97+
{
98+
return $this->getUploadsFromCategories();
99+
}
100+
101+
/**
102+
* Ottiene tutti gli allegati associati alle categorie del template.
103+
*
104+
* @return \Illuminate\Support\Collection
105+
*/
106+
public function getUploadsFromCategories()
107+
{
108+
$uploads = [];
109+
110+
// Recupera le categorie associate al template
111+
$categories = $this->categories;
112+
113+
// Per ogni categoria, recupera i file associati
114+
foreach ($categories as $category) {
115+
// Recupera i file del modulo corrente
116+
if ($this->id_module) {
117+
$files = \Models\Upload::where('id_category', $category->id)
118+
->where('id_module', $this->id_module)
119+
->get();
120+
121+
$uploads = array_merge($uploads, $files->all());
122+
}
123+
124+
// Recupera anche i file dell'azienda predefinita
125+
$id_module_anagrafiche = \Models\Module::where('name', 'Anagrafiche')->first()->id;
126+
$id_record_azienda = setting('Azienda predefinita');
127+
if ($id_record_azienda) {
128+
$files = \Models\Upload::where('id_category', $category->id)
129+
->where('id_module', $id_module_anagrafiche)
130+
->where('id_record', $id_record_azienda)
131+
->get();
132+
133+
$uploads = array_merge($uploads, $files->all());
134+
}
135+
}
136+
137+
// Rimuovi eventuali duplicati
138+
$unique_uploads = [];
139+
foreach ($uploads as $upload) {
140+
$unique_uploads[$upload->id] = $upload;
141+
}
142+
143+
return collect(array_values($unique_uploads));
144+
}
89145

90146
public function translations()
91147
{

0 commit comments

Comments
 (0)