58 lines
2.6 KiB
PHP
58 lines
2.6 KiB
PHP
<?php
|
|
namespace Incoviba\API\Common\Controller\Proyectos;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use Carbon\Carbon;
|
|
use Incoviba\Proyecto\Proyecto;
|
|
use Incoviba\API\Common\Define\Controller\Json;
|
|
use Incoviba\API\Common\Factory\Model as Factory;
|
|
use Incoviba\Mapper\Proyecto as ProyectoMapper;
|
|
use Incoviba\Mapper\Cuota as CuotaMapper;
|
|
|
|
class Cuotas {
|
|
use Json;
|
|
|
|
public function mes(Request $request, Response $response, ProyectoMapper $proyectoMapper, CuotaMapper $cuotaMapper): Response {
|
|
$proyectos = $proyectoMapper->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]);
|
|
}
|
|
}
|