56 lines
2.0 KiB
PHP
56 lines
2.0 KiB
PHP
<?php
|
|
namespace Incoviba\Controller\API\Ventas;
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Incoviba\Common\Implement\Exception\EmptyResult;
|
|
use Incoviba\Controller\API\withJson;
|
|
use Incoviba\Repository;
|
|
use Incoviba\Service;
|
|
|
|
class Cierres
|
|
{
|
|
use withJson;
|
|
public function proyecto(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Cierre $service): ResponseInterface
|
|
{
|
|
$body = $request->getBody();
|
|
$json = json_decode($body->getContents());
|
|
$proyecto_id = $json->proyecto_id;
|
|
$output = ['total' => 0];
|
|
try {
|
|
$cierres = $service->getByProyecto($proyecto_id);
|
|
$output['cierres'] = $cierres;
|
|
$output['total'] = count($cierres);
|
|
} catch (EmptyResult) {}
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function vigentes(ServerRequestInterface $request, ResponseInterface $response, Repository\Venta\Cierre $cierreRepository): ResponseInterface
|
|
{
|
|
$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 $this->withJson($response, ['cierres' => $output]);
|
|
}
|
|
}
|