167 lines
6.9 KiB
PHP
167 lines
6.9 KiB
PHP
<?php
|
|
namespace Incoviba\API\Common\Controller;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use Incoviba\API\Common\Define\Controller\Json;
|
|
use Incoviba\API\Common\Factory\Model as Factory;
|
|
use Incoviba\Inmobiliaria\Inmobiliaria;
|
|
|
|
class Inmobiliarias {
|
|
use Json;
|
|
|
|
public function __invoke(Request $request, Response $response, Factory $factory): Response {
|
|
$inmobiliarias = $factory->find(Inmobiliaria::class)->array();
|
|
$base_url = str_replace('/inmobiliarias', '{URL}', $request->getUri());
|
|
array_walk($inmobiliarias, function (&$item) use ($base_url) {
|
|
$link = [
|
|
'rel' => 'inmobiliaria',
|
|
'title' => $item['abreviacion'],
|
|
'href' => str_replace('{URL}',"/inmobiliaria/{$item['rut']}", $base_url)
|
|
];
|
|
$item['link'] = $link;
|
|
});
|
|
return $this->withJson($response, compact('inmobiliarias'));
|
|
}
|
|
protected function getInmobiliaria(Factory $factory, $inmobiliaria_rut): bool|Inmobiliaria {
|
|
return $factory->find(Inmobiliaria::class)->where([['rut', $inmobiliaria_rut]])->one();
|
|
}
|
|
public function show(Request $request, Response $response, Factory $factory, $inmobiliaria_rut): Response {
|
|
$inmobiliaria = $this->getInmobiliaria($factory, $inmobiliaria_rut);
|
|
$output = [
|
|
'input' => $inmobiliaria_rut,
|
|
'inmobiliaria' => $inmobiliaria->toArray(),
|
|
'link' => [
|
|
'rel' => 'inmobiliarias',
|
|
'title' => 'Inmobiliarias',
|
|
'href' => str_replace("/inmobiliaria/{$inmobiliaria_rut}", '/inmobiliarias', $request->getUri())
|
|
]
|
|
];
|
|
$base_url = str_replace("/inmobiliaria/{$inmobiliaria_rut}", "/inmobiliaria/{$inmobiliaria_rut}{URL}", $request->getUri());
|
|
$output['inmobiliaria']['links'] = [
|
|
[
|
|
'rel' => 'banco',
|
|
'title' => $inmobiliaria->banco()->nombre,
|
|
'href' => str_replace("/inmobiliaria/{$inmobiliaria_rut}", "/banco/{$inmobiliaria->banco}", $request->getUri())
|
|
],
|
|
[
|
|
'rel' => 'sociedad',
|
|
'title' => $inmobiliaria->sociedad()->descripcion,
|
|
'href' => str_replace("/inmobiliaria/{$inmobiliaria_rut}", "/sociedad/{$inmobiliaria->sociedad}", $request->getUri())
|
|
],
|
|
[
|
|
'rel' => 'proyectos',
|
|
'title' => 'Proyectos',
|
|
'href' => str_replace('{URL}', '/proyectos', $base_url)
|
|
]
|
|
];
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function add(Request $request, Response $response, Factory $factory): Response {
|
|
$post = $request->getParsedBody();
|
|
$output = [
|
|
'input' => $post
|
|
];
|
|
if (in_array('inmobiliarias', $post)) {
|
|
$output['inmobiliarias'] = [];
|
|
foreach ($post['inmobiliarias'] as $input) {
|
|
$inmobiliaria = Inmobiliaria::add($factory, $input);
|
|
$inmobiliarias []= [
|
|
'inmobiliaria' => $inmobiliaria->toArray(),
|
|
'created' => $inmobiliaria->is_new() ? $inmobiliaria->save() : false
|
|
];
|
|
}
|
|
} elseif (in_array('inmobiliaria', $post)) {
|
|
$inmobiliaria = Inmobiliaria::add($factory, $post);
|
|
$output['inmobiliaria'] = $inmobiliaria;
|
|
$output['created'] = $inmobiliaria->is_new() ? $inmobiliaria->save() : false;
|
|
}
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function edit(Request $request, Response $response, Factory $factory, $inmobiliaria_rut): Response {
|
|
$post = $request->getParsedBody();
|
|
$input = compact('inmobiliaria_rut', 'post');
|
|
$inmobiliaria = $this->getInmobiliaria($factory, $inmobiliaria_rut);
|
|
$output = [
|
|
'input' => $input,
|
|
'inmobiliaria' => $inmobiliaria->toArray()
|
|
];
|
|
$output['edited'] = $inmobiliaria->edit($post);
|
|
$output['changes'] = $inmobiliaria->toArray();
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function delete(Request $request, Response $response, Factory $factory, $inmobiliaria_rut): Response {
|
|
$inmobiliaria = $this->getInmobiliaria($factory, $inmobiliaria_rut);
|
|
$output = [
|
|
'input' => $inmobiliaria_rut,
|
|
'inmobiliaria' => $inmobiliaria->toArray()
|
|
];
|
|
$output['deleted'] = $inmobiliaria->delete();
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function proyectos(Request $request, Response $response, Factory $factory, $inmobiliaria_rut): Response {
|
|
$inmobiliaria = $this->getInmobiliaria($factory, $inmobiliaria_rut);
|
|
$proyectos = $inmobiliaria?->proyectos();
|
|
$base_url = str_replace("/inmobiliaria/{$inmobiliaria_rut}/proyectos", '{URL}', $request->getUri());
|
|
$output = [
|
|
'input' => $inmobiliaria_rut,
|
|
'inmobiliaria' => $inmobiliaria->toArray(),
|
|
'proyectos' => ($proyectos) ? array_map(function ($item) use ($base_url) {
|
|
$arr = $item->toArray();
|
|
$arr['link'] = [
|
|
'rel' => 'proyecto',
|
|
'title' => $item->descripcion,
|
|
'href' => str_replace('{URL}', "/proyecto/{$item->id}", $base_url)
|
|
];
|
|
return $arr;
|
|
}, $proyectos) : []
|
|
];
|
|
$output['inmobiliaria']['link'] = [
|
|
'rel' => 'inmobiliaria',
|
|
'title' => $inmobiliaria->abreviacion,
|
|
'href' => str_replace('{URL}', "/inmobiliaria/{$inmobiliaria_rut}", $base_url)
|
|
];
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function sociedad(Request $request, Response $response, Factory $factory, $inmobiliaria_rut): Response {
|
|
$inmobiliaria = $this->getInmobiliaria($factory, $inmobiliaria_rut);
|
|
$base_url = str_replace("/inmobiliaria/{$inmobiliaria_rut}/sociedad", '{URL}', $request->getUri());
|
|
$output = [
|
|
'input' => $inmobiliaria_rut,
|
|
'inmobiliaria' => $inmobiliaria->toArray(),
|
|
'sociedad' => $inmobiliaria->sociedad()->toArray()
|
|
];
|
|
$output['inmobiliaria']['link'] = [
|
|
'rel' => 'inmobiliaria',
|
|
'title' => $inmobiliaria->abreviacion,
|
|
'href' => str_replace('{URL}', "/inmobiliaria/{$inmobiliaria_rut}", $base_url)
|
|
];
|
|
$output['sociedad']['link'] = [
|
|
'rel' => 'tipo_sociedad',
|
|
'title' => $inmobiliaria->sociedad()->descripcion,
|
|
'href' => str_replace('{URL}', "/tipos/sociedad/{$inmobiliaria->sociedad}", $base_url)
|
|
];
|
|
return $this->withJson($response, $output);
|
|
}
|
|
public function banco(Request $request, Response $response, Factory $factory, $inmobiliaria_rut): Response {
|
|
$inmobiliaria = $this->getInmobiliaria($factory, $inmobiliaria_rut);
|
|
$base_url = str_replace("/inmobiliaria/{$inmobiliaria_rut}/banco", '{URL}', $request->getUri());
|
|
$output = [
|
|
'input' => $inmobiliaria_rut,
|
|
'inmobiliaria' => $inmobiliaria->toArray(),
|
|
'banco' => $inmobiliaria->banco()->toArray()
|
|
];
|
|
$output['inmobiliaria']['link'] = [
|
|
'rel' => 'inmobiliaria',
|
|
'title' => $inmobiliaria->abreviacion,
|
|
'href' => str_replace('{URL}', "/inmobiliaria/{$inmobiliaria_rut}", $base_url)
|
|
];
|
|
$output['banco']['link'] = [
|
|
'rel' => 'banco',
|
|
'title' => $inmobiliaria->banco()->nombre,
|
|
'href' => str_replace('{URL}', "/banco/{$inmobiliaria->banco}", $base_url)
|
|
];
|
|
return $this->withJson($response, $output);
|
|
}
|
|
}
|