mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
feat: gestione allegati mail predefiniti per invii automatici
This commit is contained in:
@@ -368,6 +368,7 @@ elseif (post('op') == 'send-email') {
|
|||||||
|
|
||||||
// Rimozione allegati predefiniti
|
// Rimozione allegati predefiniti
|
||||||
$mail->resetPrints();
|
$mail->resetPrints();
|
||||||
|
$mail->resetUploads();
|
||||||
|
|
||||||
// Destinatari
|
// Destinatari
|
||||||
$receivers = array_clean(post('destinatari'));
|
$receivers = array_clean(post('destinatari'));
|
||||||
|
|||||||
10
mail.php
10
mail.php
@@ -162,12 +162,10 @@ if ($smtp['pec'] == 1 && $module->name == 'Fatture di vendita') {
|
|||||||
$uploads = array_column($uploads, 'id');
|
$uploads = array_column($uploads, 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
$categories = $template->categories;
|
// Ottieni gli allegati dalle categorie associate al template
|
||||||
foreach ($categories as $category) {
|
$template_uploads = $template->uploads;
|
||||||
$files = Upload::where('id_category', $category->id)->where('id_module', $id_module)->where('id_record', $id_record)->get();
|
if (!empty($template_uploads)) {
|
||||||
$uploads = array_merge($uploads, $files->pluck('id')->toArray());
|
$uploads = array_merge($uploads, $template_uploads->pluck('id')->toArray());
|
||||||
$files = Upload::where('id_category', $category->id)->where('id_module', Module::where('name', 'Anagrafiche')->first()->id)->where('id_record', setting('Azienda predefinita'))->get();
|
|
||||||
$uploads = array_merge($uploads, $files->pluck('id')->toArray());
|
|
||||||
$uploads = array_unique($uploads);
|
$uploads = array_unique($uploads);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,11 @@ class Mail extends Model
|
|||||||
$this->uploads()->attach($file_id, ['id_email' => $this->id, 'name' => $name]);
|
$this->uploads()->attach($file_id, ['id_email' => $this->id, 'name' => $name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function resetUploads()
|
||||||
|
{
|
||||||
|
$this->uploads()->detach();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aggiunge una stampa alla notifica.
|
* Aggiunge una stampa alla notifica.
|
||||||
*
|
*
|
||||||
@@ -267,10 +272,16 @@ class Mail extends Model
|
|||||||
$this->addReceiver($template['bcc'], 'bcc');
|
$this->addReceiver($template['bcc'], 'bcc');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Incluesione stampe predefinite
|
// Inclusione stampe predefinite
|
||||||
$prints = $template->prints;
|
$prints = $template->prints;
|
||||||
foreach ($prints as $print) {
|
foreach ($prints as $print) {
|
||||||
$this->addPrint($print['id']);
|
$this->addPrint($print['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inclusione allegati predefiniti
|
||||||
|
$uploads = $template->uploads;
|
||||||
|
foreach ($uploads as $upload) {
|
||||||
|
$this->addUpload($upload['id']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,6 +86,62 @@ class Template extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsToMany(Categoria::class, 'em_files_categories_template', 'id_template', 'id_category');
|
return $this->belongsToMany(Categoria::class, 'em_files_categories_template', 'id_template', 'id_category');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accessor che ottiene dinamicamente gli uploads in base alle categorie selezionate.
|
||||||
|
* Questo metodo viene chiamato quando si accede a $template->uploads come proprietà.
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Support\Collection
|
||||||
|
*/
|
||||||
|
public function getUploadsAttribute()
|
||||||
|
{
|
||||||
|
return $this->getUploadsFromCategories();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ottiene tutti gli allegati associati alle categorie del template.
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Support\Collection
|
||||||
|
*/
|
||||||
|
public function getUploadsFromCategories()
|
||||||
|
{
|
||||||
|
$uploads = [];
|
||||||
|
|
||||||
|
// Recupera le categorie associate al template
|
||||||
|
$categories = $this->categories;
|
||||||
|
|
||||||
|
// Per ogni categoria, recupera i file associati
|
||||||
|
foreach ($categories as $category) {
|
||||||
|
// Recupera i file del modulo corrente
|
||||||
|
if ($this->id_module) {
|
||||||
|
$files = \Models\Upload::where('id_category', $category->id)
|
||||||
|
->where('id_module', $this->id_module)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$uploads = array_merge($uploads, $files->all());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recupera anche i file dell'azienda predefinita
|
||||||
|
$id_module_anagrafiche = \Models\Module::where('name', 'Anagrafiche')->first()->id;
|
||||||
|
$id_record_azienda = setting('Azienda predefinita');
|
||||||
|
if ($id_record_azienda) {
|
||||||
|
$files = \Models\Upload::where('id_category', $category->id)
|
||||||
|
->where('id_module', $id_module_anagrafiche)
|
||||||
|
->where('id_record', $id_record_azienda)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$uploads = array_merge($uploads, $files->all());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rimuovi eventuali duplicati
|
||||||
|
$unique_uploads = [];
|
||||||
|
foreach ($uploads as $upload) {
|
||||||
|
$unique_uploads[$upload->id] = $upload;
|
||||||
|
}
|
||||||
|
|
||||||
|
return collect(array_values($unique_uploads));
|
||||||
|
}
|
||||||
|
|
||||||
public function translations()
|
public function translations()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user