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(); $modulo_anagrafiche = Module::pool('Anagrafiche'); $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.descrizione) AS descrizione FROM an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica WHERE an_tipianagrafiche_anagrafiche.idanagrafica='.prepare($anagrafica->id))['descrizione']; $riga = [ Modules::link('Anagrafiche', $anagrafica->id, $descrizione), $tipo_anagrafica, $anagrafica->tipo, '