Files
oficial/app/src/Controller/API/Sociedades.php
Juan Pablo Vial 390e79ad6d 2024-06-18
2024-07-16 16:17:24 -04:00

133 lines
4.9 KiB
PHP

<?php
namespace Incoviba\Controller\API;
use Incoviba\Common\Ideal\Controller;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Incoviba\Service;
class Sociedades extends Controller
{
use withJson;
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService): ResponseInterface
{
$output = [
'sociedades' => $sociedadService->getAll('nombre'),
];
return $this->withJson($response, $output);
}
public function getMany(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'sociedades' => [],
];
foreach ($input['sociedades_ruts'] as $rut) {
$sociedad = $sociedadService->getByRut($rut);
if ($sociedad === null) {
continue;
}
$output['sociedades'][] = $sociedad;
}
return $this->withJson($response, $output);
}
public function get(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService, int $sociedad_rut): ResponseInterface
{
$output = [
'sociedad_rut' => $sociedad_rut,
'sociedad' => $sociedadService->getByRut($sociedad_rut),
];
return $this->withJson($response, $output);
}
public function add(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'sociedad' => $sociedadService->add($input),
];
return $this->withJson($response, $output);
}
public function addMany(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService, Service\Persona $personaService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'sociedades' => [],
];
try {
if (json_decode($input) !== null) {
$input = json_decode($input, true);
}
} catch (\TypeError) {}
foreach ($input['sociedades'] as $sociedadData) {
try {
if (json_decode($sociedadData) !== null) {
$sociedadData = json_decode($sociedadData, true);
}
} catch (\TypeError) {}
$contacto = $personaService->add($sociedadData['contacto']);
$sociedadData['contacto_rut'] = $contacto->rut;
unset($sociedadData['contacto']);
$sociedad = $sociedadService->add($sociedadData);
if ($sociedad === null) {
continue;
}
$output['sociedades'][] = $sociedad;
}
return $this->withJson($response, $output);
}
public function edit(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'sociedades' => [],
];
foreach ($input['sociedades'] as $sociedadData) {
$sociedad = $sociedadService->edit($sociedadData['rut'], $sociedadData);
if ($sociedad === null) {
continue;
}
$output['sociedades'][] = $sociedad;
}
return $this->withJson($response, $output);
}
public function delete(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'sociedades' => [],
];
foreach ($input['sociedades_ruts'] as $rut) {
$sociedad = $sociedadService->getByRut($rut);
$deleted = $sociedadService->delete($rut);
$output['sociedades'][] = [
'sociedad' => $sociedad,
'deleted' => $deleted,
];
}
return $this->withJson($response, $output);
}
public function asignar(ServerRequestInterface $request, ResponseInterface $response, Service\Sociedad $sociedadService): ResponseInterface
{
$input = $request->getParsedBody();
$output = [
'input' => $input,
'proveedores' => [],
];
foreach ($input['proveedores'] as $proveedorData) {
$proveedor = $sociedadService->asignar($proveedorData['inmobiliaria_rut'], $proveedorData['sociedad_rut']);
if ($proveedor === null) {
continue;
}
$output['proveedores'][] = $proveedor;
}
return $this->withJson($response, $output);
}
}