Files
oficial/app/src/Controller/Inmobiliarias.php

46 lines
1.9 KiB
PHP
Raw Normal View History

2023-09-28 22:28:30 -03:00
<?php
namespace Incoviba\Controller;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View;
2023-11-23 00:53:49 -03:00
use Incoviba\Common\Implement\Exception\EmptyRedis;
use Incoviba\Common\Implement\Exception\EmptyResult;
2023-09-28 22:28:30 -03:00
use Incoviba\Repository;
2023-11-23 00:53:49 -03:00
use Incoviba\Service;
2023-09-28 22:28:30 -03:00
class Inmobiliarias
{
2023-11-23 00:53:49 -03:00
use withRedis;
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Redis $redisService, Repository\Inmobiliaria $inmobiliariaRepository): ResponseInterface
2023-09-28 22:28:30 -03:00
{
2023-11-23 00:53:49 -03:00
$redisKey = 'inmobiliarias';
$inmobiliarias = [];
try {
$inmobiliarias = array_map(function($row) use ($inmobiliariaRepository) {
2024-03-18 13:51:57 -03:00
return $inmobiliariaRepository->load($row);
}, $this->fetchRedis($redisService, $redisKey, true));
2023-11-23 00:53:49 -03:00
} catch (EmptyRedis) {
try {
$inmobiliarias = $inmobiliariaRepository->fetchAll();
$this->saveRedis($redisService, $redisKey, $inmobiliarias);
} catch (EmptyResult) {}
}
2023-09-28 22:28:30 -03:00
return $view->render($response, 'inmobiliarias.list', compact('inmobiliarias'));
}
2023-11-23 00:53:49 -03:00
public function show(ServerRequestInterface $request, ResponseInterface $response, View $view,
Service\Redis $redisService, Repository\Inmobiliaria $inmobiliariaRepository, int $inmobiliaria_rut): ResponseInterface
2023-09-28 22:28:30 -03:00
{
2023-11-23 00:53:49 -03:00
$redisKey = "inmobiliaria:{$inmobiliaria_rut}";
try {
$inmobiliaria = $inmobiliariaRepository->load((array) $this->fetchRedis($redisService, $redisKey));
} catch (EmptyResult) {
$inmobiliaria = $inmobiliariaRepository->fetchById($inmobiliaria_rut);
$this->saveRedis($redisService, $redisKey, $inmobiliaria);
}
2023-09-28 22:28:30 -03:00
return $view->render($response, 'inmobiliaria.show', compact('inmobiliaria'));
}
}