From 7c6a397e3131f8de25f063f1cf188afc390fac81 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Mon, 18 Mar 2024 13:51:57 -0300 Subject: [PATCH] CORS --- .../views/inmobiliarias/list.blade.php | 9 +------- app/setup/middlewares/96_cors.php | 2 ++ app/src/Controller/API/Inmobiliarias.php | 10 +++++++++ app/src/Controller/Inmobiliarias.php | 4 ++-- app/src/Controller/withRedis.php | 4 ++-- app/src/Middleware/CORS.php | 21 +++++++++++++++++++ app/src/Model/Inmobiliaria.php | 4 ---- app/src/Repository/Inmobiliaria.php | 12 ++++------- 8 files changed, 42 insertions(+), 24 deletions(-) create mode 100644 app/setup/middlewares/96_cors.php create mode 100644 app/src/Middleware/CORS.php diff --git a/app/resources/views/inmobiliarias/list.blade.php b/app/resources/views/inmobiliarias/list.blade.php index 1a4e173..cf9478a 100644 --- a/app/resources/views/inmobiliarias/list.blade.php +++ b/app/resources/views/inmobiliarias/list.blade.php @@ -10,11 +10,6 @@
Inmobiliarias
- {{--
- -
--}}
@@ -22,9 +17,7 @@
- {{$inmobiliaria->abreviacion}} - {{-- - --}} + {{$inmobiliaria->abreviacion}}
{{$inmobiliaria->razon}} {{$inmobiliaria->tipoSociedad->descripcion}}
{{$inmobiliaria->rut()}}
diff --git a/app/setup/middlewares/96_cors.php b/app/setup/middlewares/96_cors.php new file mode 100644 index 0000000..8249adc --- /dev/null +++ b/app/setup/middlewares/96_cors.php @@ -0,0 +1,2 @@ +add($app->getContainer()->get(Incoviba\Middleware\CORS::class)); diff --git a/app/src/Controller/API/Inmobiliarias.php b/app/src/Controller/API/Inmobiliarias.php index 273e49d..d6fc8c2 100644 --- a/app/src/Controller/API/Inmobiliarias.php +++ b/app/src/Controller/API/Inmobiliarias.php @@ -12,6 +12,16 @@ 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 diff --git a/app/src/Controller/Inmobiliarias.php b/app/src/Controller/Inmobiliarias.php index 3387909..29653da 100644 --- a/app/src/Controller/Inmobiliarias.php +++ b/app/src/Controller/Inmobiliarias.php @@ -20,8 +20,8 @@ class Inmobiliarias $inmobiliarias = []; try { $inmobiliarias = array_map(function($row) use ($inmobiliariaRepository) { - return $inmobiliariaRepository->load((array) $row); - }, $this->fetchRedis($redisService, $redisKey)); + return $inmobiliariaRepository->load($row); + }, $this->fetchRedis($redisService, $redisKey, true)); } catch (EmptyRedis) { try { $inmobiliarias = $inmobiliariaRepository->fetchAll(); diff --git a/app/src/Controller/withRedis.php b/app/src/Controller/withRedis.php index 0cc5bab..62692ec 100644 --- a/app/src/Controller/withRedis.php +++ b/app/src/Controller/withRedis.php @@ -6,13 +6,13 @@ use Incoviba\Service; trait withRedis { - public function fetchRedis(Service\Redis $redisService, string $redisKey): mixed + public function fetchRedis(Service\Redis $redisService, string $redisKey, ?bool $asArray = null): mixed { $jsonString = $redisService->get($redisKey); if ($jsonString === null) { throw new EmptyRedis($redisKey); } - return json_decode($jsonString); + return json_decode($jsonString, $asArray); } public function saveRedis(Service\Redis $redisService, string $redisKey, mixed $value, ?int $expiration = null): void { diff --git a/app/src/Middleware/CORS.php b/app/src/Middleware/CORS.php new file mode 100644 index 0000000..718e18d --- /dev/null +++ b/app/src/Middleware/CORS.php @@ -0,0 +1,21 @@ +getMethod() === 'OPTIONS') { + return $this->responseFactory->createResponse() + ->withHeader('Access-Control-Allow-Origin', '*') + ->withHeader('Access-Control-Allow-Methods', 'POST,GET,OPTIONS'); + } + return $handler->handle($request); + } +} diff --git a/app/src/Model/Inmobiliaria.php b/app/src/Model/Inmobiliaria.php index 83400ab..e590b67 100644 --- a/app/src/Model/Inmobiliaria.php +++ b/app/src/Model/Inmobiliaria.php @@ -10,8 +10,6 @@ class Inmobiliaria extends Model public ?string $dv; public ?string $razon; public ?string $abreviacion; - public ?string $cuenta; - public ?Banco $banco; public ?TipoSociedad $tipoSociedad; public function rut(): string @@ -37,8 +35,6 @@ class Inmobiliaria extends Model 'rut_formateado' => $this->rut(), 'razon' => $this->razon ?? '', 'abreviacion' => $this->abreviacion ?? '', - 'cuenta' => $this->cuenta ?? '', - 'banco' => $this->banco ?? '', 'tipo_sociedad' => $this->tipoSociedad ?? '' ]; } diff --git a/app/src/Repository/Inmobiliaria.php b/app/src/Repository/Inmobiliaria.php index decedf3..77dac3f 100644 --- a/app/src/Repository/Inmobiliaria.php +++ b/app/src/Repository/Inmobiliaria.php @@ -20,13 +20,9 @@ class Inmobiliaria extends Ideal\Repository return 'rut'; } - public function create(?array $data = null): Define\Model + public function create(?array $data = null): Model\Inmobiliaria { - $map = (new Implement\Repository\MapperParser(['dv', 'razon', 'abreviacion', 'cuenta'])) - ->register('banco', (new Implement\Repository\Mapper()) - ->setFunction(function($data) { - return $this->bancoRepository->fetchById($data['banco']); - })) + $map = (new Implement\Repository\MapperParser(['dv', 'razon', 'abreviacion'])) ->register('sociedad', (new Implement\Repository\Mapper()) ->setProperty('tipoSociedad') ->setFunction(function($data) { @@ -34,7 +30,7 @@ class Inmobiliaria extends Ideal\Repository })); return $this->parseData(new Model\Inmobiliaria(), $data, $map); } - public function save(Define\Model $model): Define\Model + public function save(Define\Model $model): Model\Inmobiliaria { $model->rut = $this->saveNew( ['dv', 'razon', 'abreviacion', 'cuenta', 'banco', 'sociedad'], @@ -42,7 +38,7 @@ class Inmobiliaria extends Ideal\Repository ); return $model; } - public function edit(Define\Model $model, array $new_data): Define\Model + public function edit(Define\Model $model, array $new_data): Model\Inmobiliaria { return $this->update($model, ['dv', 'razon', 'abreviacion', 'cuenta', 'banco', 'sociedad'], $new_data); }