Redis
This commit is contained in:
@ -19,11 +19,15 @@ class Proyecto
|
||||
{
|
||||
return $this->proyectoRepository->fetchAllEscriturando();
|
||||
}
|
||||
public function getById(int $venta_id): Model\Proyecto
|
||||
public function getById(int $proyecto_id): Model\Proyecto
|
||||
{
|
||||
return $this->process($this->proyectoRepository->fetchById($venta_id));
|
||||
return $this->process($this->proyectoRepository->fetchById($proyecto_id));
|
||||
}
|
||||
protected function process(Model\Proyecto $proyecto): Model\Proyecto
|
||||
public function getByName(string $name): Model\Proyecto
|
||||
{
|
||||
return $this->process($this->proyectoRepository->fetchByName($name));
|
||||
}
|
||||
public function process(Model\Proyecto $proyecto): Model\Proyecto
|
||||
{
|
||||
$proyecto->addFactory('estados', (new Implement\Repository\Factory())
|
||||
->setCallable([$this->estadoProyecto, 'fetchByProyecto'])
|
||||
|
@ -2,12 +2,18 @@
|
||||
namespace Incoviba\Service;
|
||||
|
||||
use Incoviba\Common\Implement\Exception\EmptyResult;
|
||||
use Incoviba\Common\Implement\Exception\EmptyResponse;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository;
|
||||
|
||||
class Search
|
||||
{
|
||||
public function __construct(protected Venta $ventaService, protected Repository\Venta $ventaRepository, protected Repository\Venta\Unidad $unidadRepository, protected Repository\Proyecto\TipoUnidad $tipoUnidadRepository) {}
|
||||
public function __construct(
|
||||
protected Proyecto $proyectoService,
|
||||
protected Venta $ventaService,
|
||||
protected Repository\Venta $ventaRepository,
|
||||
protected Repository\Venta\Unidad $unidadRepository,
|
||||
protected Repository\Proyecto\TipoUnidad $tipoUnidadRepository) {}
|
||||
|
||||
public function query(string $query, string $tipo): array
|
||||
{
|
||||
@ -39,7 +45,12 @@ class Search
|
||||
}
|
||||
protected function find(string $query, string $tipo): array
|
||||
{
|
||||
$queries = explode(' ', $query);
|
||||
preg_match_all('/["\']([\s\w]+)["\']|(\w+)/i', $query, $matches, PREG_SET_ORDER | PREG_UNMATCHED_AS_NULL);
|
||||
$queries = array_map(function($match) {
|
||||
array_shift($match);
|
||||
$valid = array_filter($match, function($line) {return $line !== null;});
|
||||
return implode(' ', $valid);
|
||||
}, $matches);
|
||||
$tiposUnidades = $this->getTiposUnidades();
|
||||
$results = [];
|
||||
foreach ($queries as $q) {
|
||||
@ -113,7 +124,8 @@ class Search
|
||||
protected function findProyecto(string $query): array
|
||||
{
|
||||
try {
|
||||
return $this->ventaService->getByProyecto($query);
|
||||
$proyecto = $this->proyectoService->getByName($query);
|
||||
return $this->ventaService->getByProyecto($proyecto->id);
|
||||
} catch (EmptyResult) {
|
||||
return [];
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ class Venta
|
||||
return $venta;
|
||||
}
|
||||
|
||||
public function add(array $data): void
|
||||
public function add(array $data): Model\Venta
|
||||
{
|
||||
$fecha = new DateTimeImmutable($data['fecha_venta']);
|
||||
$data['uf'] = $this->moneyService->getUF($fecha);
|
||||
@ -103,6 +103,8 @@ class Venta
|
||||
'fecha' => $venta->fecha->format('Y-m-d')
|
||||
]);
|
||||
$this->estadoVentaRepository->save($estado);
|
||||
|
||||
return $venta;
|
||||
}
|
||||
protected function addPropietario(array $data): Model\Venta\Propietario
|
||||
{
|
||||
|
Reference in New Issue
Block a user