<?php
use Carbon\Carbon;
use Incoviba\old\Proyecto\Proyecto;
use App\Contract\Auth;

include_once dirname(__DIR__) . '/bootstrap/autoload.php';

header("Access-Control-Allow-Origin: *");

if (config('app.debug') == true) {
	if (config('app.benchmark') == true) {
		$benchmark = (object) ['time' => microtime(true)];
	}
}

Carbon::setLocale(config('app.locale'));
setlocale(LC_TIME, 'es_ES');

sanitize();

try {
	Auth::isIn();
} catch (PDOException $e) {
	header('Location: install');
	die();
}
if (Auth::isIn()) {
	if ((get('p') !== false or get('page') !== false or get('m') !== false or get('module') !== false)) {
		if (($route = route()) !== false) {
			echo $route;
		} else {
			echo view('construccion');
		}
	} else {
		$proyectos = model(Proyecto::class)->findMany();
		$dias = [];
		$cierres = [];
		$pendientes = 0;
		$hoy = 0;
		foreach ($proyectos as $proyecto) {
			$pendientes += $proyecto->cuotasPendientes();
			$hoy += $proyecto->cuotasHoy();
			foreach ($proyecto->cuotasMes() as $cuota) {
				$f = $cuota->pago()->fecha();
				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] = [$proyecto->descripcion => 0];
				}
				if (!isset($dias[$dia][$proyecto->descripcion])) {
					$dias[$dia][$proyecto->descripcion] = 0;
				}
				$dias[$dia][$proyecto->descripcion] ++;
			}
			if (count($proyecto->cierres()) > 0) {
				$cierres[$proyecto->descripcion] = (object) ['total' => count($proyecto->cierres()),'vigentes' => $proyecto->cierres(3), 'rechazados' => $proyecto->cierres(-1), 'pendientes' => $proyecto->cierres(2)];
			}
		}
		uksort($dias, function($a, $b) {
			return strcmp($a, $b);
		});
		uksort($cierres, function($a, $b) {
			return strcmp($a, $b);
		});
		echo view('home', compact('pendientes', 'hoy', 'dias', 'cierres'));
	}
} elseif (get('p') == 'auth' or get('page') == 'auth') {
	$route = route();
	if ($route !== false) {
		echo $route;
	} else {
		echo view('guest');
	}
} else {
	echo view('guest');
}

if (config('app.debug') == 'true') {
	if (config('app.benchmark') == 'true') {
		$benchmark->time = microtime(true) - $benchmark->time;
		if (get('ajax') != '1' and get('p') != 'ajax' and get('p') != 'informes') {
			echo view('benchmark', compact('benchmark'));
		}
	}
}
?>
