fetchAll(); $dias = []; foreach ($proyectos as $proyecto) { $cuotas = $cuotaMapper->fetchByProyectoAndMes($proyecto->id, new \DateTimeImmutable()); foreach ($cuotas as $cuota) { $f = Carbon::createFromTimestamp($cuota->pago->fecha->getTimestamp()); if ($f->isoWeekday() == 6 or $f->isoWeekDay() == 7) { $f = $f->copy()->addDays(2)->startOfWeek(); } $dia = $f->format('Y-m-d'); if (!isset($dias[$dia])) { $dias[$dia] = ['dia' => $dia, 'proyectos' => [$proyecto->descripcion => ['proyecto' => $proyecto->descripcion, 'cantidad' => 0]]]; } if (!isset($dias[$dia]['proyectos'][$proyecto->descripcion])) { $dias[$dia]['proyectos'][$proyecto->descripcion] = ['proyecto' => $proyecto->descripcion, 'cantidad' => 0]; } $dias[$dia]['proyectos'][$proyecto->descripcion]['cantidad'] ++; } } uksort($dias, function($a, $b) { return strcmp($a, $b); }); return $this->withJson($response, ['dias' => $dias]); } public function hoy(Request $request, Response $response, ProyectoMapper $proyectoMapper, CuotaMapper $cuotaMapper): Response { $proyectos = $proyectoMapper->fetchAll(); $hoy = 0; foreach ($proyectos as $proyecto) { $hoy += count($cuotaMapper->fetchByProyectoAndFecha($proyecto->id, new \DateTimeImmutable())); } return $this->withJson($response, ['hoy' => $hoy]); } public function pendientes(Request $request, Response $response, ProyectoMapper $proyectoMapper, CuotaMapper $cuotaMapper): Response { $proyectos = $proyectoMapper->fetchAll(); $pendientes = 0; foreach ($proyectos as $proyecto) { $pendientes += count($cuotaMapper->fetchByProyectoAndPendiente($proyecto->id)); } return $this->withJson($response, ['pendientes' => $pendientes]); } }