90 lines
4.0 KiB
PHP
90 lines
4.0 KiB
PHP
<?php
|
|
namespace Incoviba\Controller\API;
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Incoviba\Common\Implement\Exception\EmptyResult;
|
|
use Incoviba\Model;
|
|
use Incoviba\Repository;
|
|
use Incoviba\Service;
|
|
|
|
class Inmobiliarias
|
|
{
|
|
use withJson;
|
|
|
|
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, Repository\Inmobiliaria $inmobiliariaRepository): ResponseInterface
|
|
{
|
|
$output = [
|
|
'inmobiliarias' => []
|
|
];
|
|
try {
|
|
$output['inmobiliarias'] = $inmobiliariaRepository->fetchAll('razon');
|
|
} catch (EmptyResult) {}
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function cuentas(ServerRequestInterface $request, ResponseInterface $response,
|
|
Repository\Inmobiliaria $inmobiliariaRepository,
|
|
Repository\Inmobiliaria\Cuenta $cuentaRepository, int $inmobiliaria_rut): ResponseInterface
|
|
{
|
|
$output = [
|
|
'inmobiliaria_rut' => $inmobiliaria_rut,
|
|
'cuentas' => []
|
|
];
|
|
try {
|
|
$inmobiliaria = $inmobiliariaRepository->fetchById($inmobiliaria_rut);
|
|
$output['cuentas'] = $cuentaRepository->fetchByInmobiliaria($inmobiliaria->rut);
|
|
} catch (EmptyResult) {}
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function proyectos(ServerRequestInterface $request, ResponseInterface $response,
|
|
Repository\Inmobiliaria $inmobiliariaRepository,
|
|
Service\Proyecto $proyectoService, int $inmobiliaria_rut): ResponseInterface
|
|
{
|
|
$output = [
|
|
'inmobiliaria_rut' => $inmobiliaria_rut,
|
|
'proyectos' => []
|
|
];
|
|
try {
|
|
$inmobiliaria = $inmobiliariaRepository->fetchById($inmobiliaria_rut);
|
|
$output['proyectos'] = array_map(function(Model\Proyecto $proyecto) {
|
|
$p = json_decode(json_encode($proyecto));
|
|
$p->current_estado = $proyecto->currentEstado();
|
|
$p->estados = $proyecto->estados();
|
|
return $p;
|
|
},$proyectoService->getByInmobiliaria($inmobiliaria->rut));
|
|
} catch (EmptyResult) {}
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function proveedores(ServerRequestInterface $request, ResponseInterface $response,
|
|
Repository\Inmobiliaria $inmobiliariaRepository,
|
|
Repository\Inmobiliaria\SociedadAgente $sociedadAgenteRepository,
|
|
Repository\Inmobiliaria\TipoAgente $tipoAgenteRepository,
|
|
int $inmobiliaria_rut): ResponseInterface
|
|
{
|
|
$input = $request->getParsedBody();
|
|
$output = [
|
|
'sociedad_rut' => $inmobiliaria_rut,
|
|
'input' => $input,
|
|
'sociedad' => null,
|
|
'proveedores' => []
|
|
];
|
|
try {
|
|
$inmobiliaria = $inmobiliariaRepository->fetchById($inmobiliaria_rut);
|
|
$output['sociedad'] = $inmobiliaria;
|
|
if (isset($input['tipo_agente_id'])) {
|
|
$tipo = $tipoAgenteRepository->fetchById($input['tipo_agente_id']);
|
|
$proveedores = $sociedadAgenteRepository->fetchBySociedadAndTipo($inmobiliaria->rut, $tipo->id);
|
|
} else {
|
|
$proveedores = $sociedadAgenteRepository->fetchBySociedad($inmobiliaria->rut);
|
|
}
|
|
$output['proveedores'] = json_decode(json_encode($proveedores), JSON_OBJECT_AS_ARRAY);
|
|
foreach ($proveedores as $i => $proveedor) {
|
|
$output['proveedores'][$i]['sociedad'] = $proveedor->sociedad;
|
|
$output['proveedores'][$i]['proveedor'] = $proveedor->agenteTipo->agente;
|
|
$output['proveedores'][$i]['tipo'] = $proveedor->agenteTipo->tipoAgente;
|
|
}
|
|
} catch (EmptyResult) {}
|
|
return $this->withJson($response, $output);
|
|
}
|
|
}
|