Listado de Precios para Contrato Broker
This commit is contained in:
@ -187,4 +187,5 @@ class Proyectos
|
||||
}
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,9 +5,11 @@ use DateTimeImmutable;
|
||||
use DateMalformedStringException;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Controller\API\withJson;
|
||||
use Incoviba\Service;
|
||||
use Incoviba\Exception\ServiceAction;
|
||||
use Incoviba\Repository;
|
||||
use Incoviba\Service;
|
||||
|
||||
class Contracts
|
||||
{
|
||||
@ -140,4 +142,34 @@ class Contracts
|
||||
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
|
||||
public function promotions(ServerRequestInterface $request, ResponseInterface $response,
|
||||
Service\Proyecto\Broker\Contract $contractService,
|
||||
Repository\Venta\Unidad $unitRepository,
|
||||
Repository\Venta\Promotion $promotionRepository,
|
||||
int $contract_id): ResponseInterface
|
||||
{
|
||||
$input = $request->getParsedBody();
|
||||
$output = [
|
||||
'contract_id' => $contract_id,
|
||||
'input' => $input,
|
||||
'unidades' => [],
|
||||
];
|
||||
$unit_ids = $input['unidad_ids'];
|
||||
if (is_string($unit_ids)) {
|
||||
$unit_ids = json_decode($input['unidad_ids'], true);
|
||||
}
|
||||
foreach ($unit_ids as $unit_id) {
|
||||
try {
|
||||
$unit = $unitRepository->fetchById($unit_id);
|
||||
$contractService->getById($contract_id);
|
||||
$promotion = $promotionRepository->fetchByContractAndUnit($contract_id, $unit->id);
|
||||
$output['unidades'] []= [
|
||||
'id' => $unit->id,
|
||||
'promotion' => $promotion
|
||||
];
|
||||
} catch (ServiceAction\Read | Implement\Exception\EmptyResult) {}
|
||||
}
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
}
|
||||
|
85
app/src/Controller/API/Proyectos/Unidades.php
Normal file
85
app/src/Controller/API/Proyectos/Unidades.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
namespace Incoviba\Controller\API\Proyectos;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Common\Implement;
|
||||
use Incoviba\Controller\API\withJson;
|
||||
use Incoviba\Controller\withRedis;
|
||||
use Incoviba\Exception;
|
||||
use Incoviba\Model;
|
||||
use Incoviba\Repository;
|
||||
use Incoviba\Service;
|
||||
|
||||
class Unidades extends Ideal\Controller
|
||||
{
|
||||
use withJson;
|
||||
use withRedis;
|
||||
|
||||
public function precios(ServerRequestInterface $request, ResponseInterface $response,
|
||||
Service\Proyecto $proyectoService,
|
||||
Repository\Venta\Precio $precioRepository,
|
||||
int $proyecto_id): ResponseInterface
|
||||
{
|
||||
$input = $request->getParsedBody();
|
||||
$output = [
|
||||
'proyecto_id' => $proyecto_id,
|
||||
'input' => $input,
|
||||
'precios' => []
|
||||
];
|
||||
$unidad_ids = $input['unidad_ids'];
|
||||
if (is_string($unidad_ids)) {
|
||||
$unidad_ids = json_decode($input['unidad_ids'], true);
|
||||
}
|
||||
try {
|
||||
$proyecto = $proyectoService->getById($proyecto_id);
|
||||
foreach ($unidad_ids as $unidad_id) {
|
||||
try {
|
||||
$output['precios'][] = [
|
||||
'id' => $unidad_id,
|
||||
'precio' => $precioRepository->fetchVigenteByUnidad((int) $unidad_id)
|
||||
];
|
||||
} catch (Implement\Exception\EmptyResult) {}
|
||||
}
|
||||
} catch (Implement\Exception\EmptyResult) {}
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
public function estados(ServerRequestInterface $request, ResponseInterface $response,
|
||||
Service\Proyecto $proyectoService,
|
||||
Repository\Venta\Unidad $unidadRepository,
|
||||
int $proyecto_id): ResponseInterface
|
||||
{
|
||||
$input = $request->getParsedBody();
|
||||
$output = [
|
||||
'proyecto_id' => $proyecto_id,
|
||||
'input' => $input,
|
||||
'estados' => []
|
||||
];
|
||||
$unidad_ids = $input['unidad_ids'];
|
||||
if (is_string($unidad_ids)) {
|
||||
$unidad_ids = json_decode($input['unidad_ids'], true);
|
||||
}
|
||||
try {
|
||||
$proyecto = $proyectoService->getById($proyecto_id);
|
||||
foreach ($unidad_ids as $unidad_id) {
|
||||
try {
|
||||
$unidad = $unidadRepository->fetchById($unidad_id);
|
||||
} catch (Implement\Exception\EmptyResult) {
|
||||
try {
|
||||
$output['estados'][] = [
|
||||
'id' => $unidad_id,
|
||||
'sold' => $unidadRepository->fetchSoldByUnidad((int) $unidad_id)
|
||||
];
|
||||
} catch (Implement\Exception\EmptyResult) {
|
||||
$output['estados'][] = [
|
||||
'id' => $unidad_id,
|
||||
'sold' => false
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Implement\Exception\EmptyResult) {}
|
||||
return $this->withJson($response, $output);
|
||||
}
|
||||
}
|
24
app/src/Controller/Proyectos/Brokers/Contracts.php
Normal file
24
app/src/Controller/Proyectos/Brokers/Contracts.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
namespace Incoviba\Controller\Proyectos\Brokers;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Incoviba\Common\Alias\View;
|
||||
use Incoviba\Common\Ideal\Controller;
|
||||
use Incoviba\Exception;
|
||||
use Incoviba\Service;
|
||||
|
||||
class Contracts extends Controller
|
||||
{
|
||||
public function show(ServerRequestInterface $request, ResponseInterface $response, View $view,
|
||||
Service\Proyecto\Broker\Contract $contractService,
|
||||
int $broker_rut, int $contract_id): ResponseInterface
|
||||
{
|
||||
$contract = null;
|
||||
try {
|
||||
$contract = $contractService->getById($contract_id);
|
||||
} catch (Exception\ServiceAction\Read) {}
|
||||
|
||||
return $view->render($response, 'proyectos.brokers.contracts.show', compact('contract'));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user