1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-23 06:47:40 +01:00

Miglioramento gestione invio newsletter

This commit is contained in:
Dasc3er 2021-08-05 12:21:34 +02:00
parent 458fa5baf9
commit 0b140f93ce
5 changed files with 35 additions and 15 deletions

View File

@ -116,7 +116,7 @@ function start_datatables() {
} else {
$('#mini-loader').hide();
}
})
});
}
});
}

View File

@ -141,7 +141,7 @@ $(document).ready(function() {
senza_consenso.hide();
}
$("#destinatari").DataTable({
const table = $("#destinatari").DataTable({
language: globals.translations.datatables,
retrieve: true,
ordering: false,
@ -159,5 +159,13 @@ $(document).ready(function() {
searchDelay: 500,
pageLength: 50,
});
table.on("processing.dt", function (e, settings, processing) {
if (processing) {
$("#mini-loader").show();
} else {
$("#mini-loader").hide();
}
});
});
</script>';

View File

@ -24,6 +24,7 @@ use Modules\Emails\Mail;
use Modules\Emails\Template;
use Modules\ListeNewsletter\Lista;
use Modules\Newsletter\Newsletter;
use Respect\Validation\Validator as v;
include_once __DIR__.'/../../core.php';
@ -64,10 +65,16 @@ switch (filter('op')) {
$uploads = $newsletter->uploads()->pluck('id');
$destinatari = $newsletter->destinatari();
foreach ($destinatari as $destinatario) {
$anagrafica = $destinatario instanceof Anagrafica ? $destinatario : $destinatario->anagrafica;
$count = $destinatari->count();
for ($i = 0; $i < $count; $i++) {
$destinatario = $destinatari->skip($i)->first();
$origine = $destinatario->getOrigine();
$anagrafica = $origine instanceof Anagrafica ? $origine : $origine->anagrafica;
$abilita_newsletter = $anagrafica->enable_newsletter;
if (empty($destinatario->email) || empty($abilita_newsletter)) {
$email = $destinatario->email;
if (empty($email) || empty($abilita_newsletter) || !v::email()->validate($email)) {
continue;
}
@ -75,7 +82,7 @@ switch (filter('op')) {
$mail = Mail::build($user, $template, $anagrafica->id);
// Completamento informazioni
$mail->addReceiver($destinatario->email);
$mail->addReceiver($email);
$mail->subject = $newsletter->subject;
$mail->content = $newsletter->content;
$mail->id_newsletter = $newsletter->id;
@ -88,13 +95,8 @@ switch (filter('op')) {
$mail->save();
// Aggiornamento riferimento per la newsletter
$database->update('em_newsletter_receiver', [
'id_email' => $mail->id,
], [
'record_type' => get_class($destinatario),
'record_id' => $destinatario->id,
'id_newsletter' => $newsletter->id,
]);
$destinatario->id_email = $mail->id;
$destinatario->save();
}
// Aggiornamento stato newsletter

View File

@ -1,5 +1,6 @@
<?php
use Models\Module;
use Modules\Anagrafiche\Anagrafica;
use Modules\Anagrafiche\Referente;
use Modules\Anagrafiche\Sede;
@ -56,6 +57,7 @@ $destinatari_filtrati = (clone $destinatari)
->skip($start)->take($length)
->get();
$modulo_anagrafiche = Module::pool('Anagrafiche');
$righe = [];
foreach ($destinatari_filtrati as $destinatario) {
$origine = $destinatario->getOrigine();
@ -84,7 +86,7 @@ foreach ($destinatari_filtrati as $destinatario) {
'readonly' => '1',
'class' => 'email-mask',
'value' => $origine->email,
'validation' => 'email',
'validation' => 'email|'.$modulo_anagrafiche->id.'|'.$destinatario->record_id,
]) :
'<span class="text-danger"><i class="fa fa-close"></i> '.tr('Indirizzo e-mail mancante').'</span>'
).'

View File

@ -213,7 +213,7 @@ $(document).ready(function() {
senza_consenso.hide();
}
$("#destinatari").DataTable({
const table = $("#destinatari").DataTable({
language: globals.translations.datatables,
retrieve: true,
ordering: false,
@ -231,5 +231,13 @@ $(document).ready(function() {
searchDelay: 500,
pageLength: 50,
});
table.on("processing.dt", function (e, settings, processing) {
if (processing) {
$("#mini-loader").show();
} else {
$("#mini-loader").hide();
}
});
});
</script>';