mapToGroups(function ($item, $key) { list($tipo, $id) = explode('_', $item['id']); return [$tipo => $id]; }); $destinatari = $riferimento->destinatari() ->where(function ($query) use ($results) { $query->where('record_type', '=', Anagrafica::class) ->whereIn('record_id', !empty($results['anagrafica']) ? $results['anagrafica']->toArray() : []); }) ->orWhere(function ($query) use ($results) { $query->where('record_type', '=', Sede::class) ->whereIn('record_id', !empty($results['sede']) ? $results['sede']->toArray() : []); }) ->orWhere(function ($query) use ($results) { $query->where('record_type', '=', Referente::class) ->whereIn('record_id', !empty($results['referente']) ? $results['referente']->toArray() : []); }); } // Elenco di tutti i destinatari else { $destinatari = $riferimento->destinatari(); } $start = filter('start'); $length = filter('length'); // Filtro dei record richiesti $destinatari_filtrati = (clone $destinatari) ->skip($start)->take($length) ->get(); $id_modulo_anagrafiche = (new Module())->getByField('name', 'Anagrafiche', \Models\Locale::getPredefined()->id); $righe = []; foreach ($destinatari_filtrati as $destinatario) { $origine = $destinatario->getOrigine(); $anagrafica = $origine instanceof Anagrafica ? $origine : $origine->anagrafica; $descrizione = $anagrafica->ragione_sociale; if ($origine instanceof Sede) { $descrizione .= ' ['.$origine->nomesede.']'; } elseif ($origine instanceof Referente) { $descrizione .= ' ['.$origine->nome.']'; } $tipo_anagrafica = $database->fetchOne('SELECT GROUP_CONCAT(`an_tipianagrafiche_lang`.`name`) AS descrizione FROM `an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `an_tipianagrafiche_anagrafiche`.`idanagrafica`='.prepare($anagrafica->id))['descrizione']; $riga = [ Modules::link('Anagrafiche', $anagrafica->id, $descrizione), $tipo_anagrafica, $anagrafica->tipo, '
'. (!empty($origine->email) ? input([ 'type' => 'text', 'name' => 'email', 'id' => 'email_'.rand(0, 99999), 'readonly' => '1', 'class' => 'email-mask', 'value' => $origine->email, 'validation' => 'email|'.$id_modulo_anagrafiche.'|'.$destinatario->record_id, ]) : ' '.tr('Indirizzo e-mail mancante').'' ).'
', ]; // Informazioni di invio if (empty($lista)) { $mail_id = $destinatario->id_email; $mail = Mail::find($mail_id); if (!empty($mail) && !empty($mail->sent_at)) { $info_invio = ' '.timestampFormat($mail->sent_at).' '; } else { $info_invio = ' '.tr('Non ancora inviata').' '; } $riga[] = '
'.$info_invio.'
'; } $riga = array_merge($riga, [ '
'. (!empty($origine->enable_newsletter) ? ' '.tr('Abilitato').'' : ' '.tr('Disabilitato').'' ).'
', '
'.(empty($lista) && !empty($origine->email) && !empty($origine->enable_newsletter) ? ' ' : '').'
', ]); $righe[] = $riga; } // Formattazione dei dati echo json_encode([ 'data' => $righe, 'recordsTotal' => $riferimento->destinatari()->count(), 'recordsFiltered' => $destinatari->count(), 'draw' => intval(filter('draw')), ]);