diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index 95668aa7b..e263865e3 100755 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -19,11 +19,14 @@ include_once __DIR__.'/../../core.php'; +use Models\OperationLog; use Modules\Anagrafiche\Anagrafica; use Modules\Fatture\Fattura; use Modules\Fatture\Tipo; use Modules\Interventi\Intervento; use Modules\Interventi\Stato; +use Modules\Emails\Mail; +use Modules\Emails\Template; use Util\Zip; // Segmenti @@ -271,6 +274,63 @@ switch (post('op')) { redirect(base_path().'/pdfgen.php?id_print='.$id_print.'&tipo='.post('tipo')); exit(); + break; + + case 'send-mail': + $template = Template::find(post('id_template')); + + $list = []; + foreach ($id_records as $id) { + $intervento = Intervento::find($id); + $id_anagrafica = $intervento->idanagrafica; + + // Selezione destinatari e invio mail + if (!empty($template)) { + $creata_mail = false; + $emails = []; + + // Aggiungo email anagrafica + if (!empty($intervento->anagrafica->email)) { + $emails[] = $intervento->anagrafica->email; + $mail = Mail::build(auth()->getUser(), $template, $id); + $mail->addReceiver($intervento->anagrafica->email); + $creata_mail = true; + } + + // Aggiungo email referenti in base alla mansione impostata nel template + $mansioni = $dbo->select('em_mansioni_template', 'idmansione', ['id_template' => $template->id]); + foreach ($mansioni as $mansione) { + $referenti = $dbo->table('an_referenti')->where('idmansione', $mansione['idmansione'])->where('idanagrafica', $id_anagrafica)->where('email', '!=', '')->get(); + if (!$referenti->isEmpty() && $creata_mail == false) { + $mail = Mail::build(auth()->getUser(), $template, $id); + $creata_mail = true; + } + + foreach ($referenti as $referente) { + if (!in_array($referente->email, $emails)) { + $emails[] = $referente->email; + $mail->addReceiver($referente->email); + } + } + } + if ($creata_mail == true) { + $mail->save(); + OperationLog::setInfo('id_email', $mail->id); + OperationLog::setInfo('id_module', $id_module); + OperationLog::setInfo('id_record', $id_record); + OperationLog::build('send-email'); + + array_push($list, $intervento->codice); + } + } + } + + if ($list){ + flash()->info(tr('Mail inviata per le attività _LIST_ !', [ + '_LIST_' => implode(',', $list), + ])); + } + break; } @@ -343,4 +403,15 @@ if (App::debug()) { ], ]; + $operations['send-mail'] = [ + 'text' => ' '.tr('Invia mail').'', + 'data' => [ + 'title' => tr('Inviare mail?'), + 'msg' => tr('Per ciascuna attività selezionata, verrà inviata una mail').'

+ {[ "type": "select", "label": "'.tr('Template').'", "name": "id_template", "required": "1", "values": "query=SELECT id, name AS descrizione FROM em_templates WHERE id_module='.prepare($id_module).' AND deleted_at IS NULL;" ]}', + 'button' => tr('Invia'), + 'class' => 'btn btn-lg btn-warning', + ], + ]; + return $operations;