This commit is contained in:
2023-11-23 00:53:49 -03:00
parent 9ab0515954
commit bf03e85975
32 changed files with 599 additions and 314 deletions

View File

@ -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'])

View File

@ -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 [];
}

View File

@ -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
{