isIn()) { return $this->home($response, $view, $cuotaRepository, $cierreRepository); } return $this->login($response, $view); } protected function home(ResponseInterface $response, View $view, Repository\Venta\Cuota $cuotaRepository, Repository\Venta\Cierre $cierreRepository): ResponseInterface { $cuotas_hoy = count($cuotaRepository->fetchHoy()) ?? 0; $cuotas_pendientes = count($cuotaRepository->fetchPendientes()) ?? 0; $cuotas_por_vencer = $this->getCuotasPorVencer($cuotaRepository); $cierres_vigentes = $this->getCierresVigentes($cierreRepository); return $view->render($response, 'home', compact('cuotas_hoy', 'cuotas_pendientes', 'cuotas_por_vencer', 'cierres_vigentes')); } protected function login(ResponseInterface $response, View $view): ResponseInterface { return $view->render($response, 'guest'); } protected function getCuotasPorVencer(Repository\Venta\Cuota $cuotaRepository): array { $cuotas = $cuotaRepository->fetchDatosPorVencer(); $output = []; foreach ($cuotas as $row) { $fecha = $row['Fecha']; $date = new DateTimeImmutable($fecha); if (($weekday = $date->format('N')) > 5) { $day_diff = 7 - $weekday + 1; $date = $date->add(new DateInterval("P{$day_diff}D")); $fecha = $date->format('Y-m-d'); } if (!isset($output[$fecha])) { $output[$fecha] = []; } if (!isset($output[$fecha][$row['Proyecto']])) { $output[$fecha][$row['Proyecto']] = 0; } $output[$fecha][$row['Proyecto']] += $row['Cantidad']; } foreach ($output as $fecha => $day) { uksort($day, function($a, $b) { return strcmp($a, $b); }); $output[$fecha] = $day; } return $output; } protected function getCierresVigentes(Repository\Venta\Cierre $cierreRepository): array { $cierres = $cierreRepository->fetchDatosVigentes(); $output = []; $estados = [ 'revisado' => 'pendientes', 'rechazado' => 'rechazados', 'aprobado' => 'pendientes', 'vendido' => 'promesados', 'abandonado' => 'rechazados', 'promesado' => 'promesados', 'resciliado' => 'rechazados' ]; foreach ($cierres as $row) { if (!isset($output[$row['Proyecto']])) { $output[$row['Proyecto']] = [ 'promesados' => 0, 'pendientes' => 0, 'rechazados' => 0, 'total' => 0 ]; } $estado = $estados[$row['Estado']]; $output[$row['Proyecto']][$estado] += $row['Cantidad']; $output[$row['Proyecto']]['total'] += $row['Cantidad']; } return $output; } }