fetchAll(); $cierres = []; function filter_cierres($cierres, $estado) { return array_filter($cierres, function ($item) use ($estado) { return $item->estado()->tipo->descripcion === $estado; }); } foreach ($proyectos as $proyecto) { $cs = $cierreMapper->fetchByProyecto($proyecto->id); if (count($cs) == 0) { continue; } $pendientes = filter_cierres($cs, 'pendiente'); $cierres[$proyecto->descripcion] = [ 'proyecto' => $proyecto->descripcion, 'total' => count($cs), 'promesados' => count(filter_cierres($cs, 'promesado')), 'rechazados' => count(filter_cierres($cs, 'rechazado')), 'pendientes' => count($pendientes), 'ultimo_pendiente' => (count($pendientes) > 0) ? $pendientes[0]->periodo() : 0 ]; } return $this->withJson($response, compact('cierres')); } }