<?php
namespace Incoviba\Controller\Ventas;

use Incoviba\Common\Implement\Exception\EmptyResult;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Alias\View;
use Incoviba\Service;
use Incoviba\Model;

class Precios
{
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, View $view, Service\Proyecto $proyectoService): ResponseInterface
    {
        $proyectos = array_map(function(Model\Proyecto $proyecto) {return ['id' => $proyecto->id, 'descripcion' => $proyecto->descripcion];}, $proyectoService->getVendibles());
        return $view->render($response, 'ventas.precios.list', compact('proyectos'));
    }
    public function proyecto(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Precio $precioService): ResponseInterface
    {
        $body = $request->getBody();
        $json = json_decode($body->getContents());
        $proyecto_id = $json->proyecto_id;
        $output = ['total' => 0];
        try {
            $precios = $precioService->getByProyecto($proyecto_id);
            $output['precios'] = $precios;
            $output['total'] = count($precios);
        } catch (EmptyResult) {}
        $response->getBody()->write(json_encode($output));
        return $response->withHeader('Content-Type', 'application/json');
    }
    public function unidad(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Precio $precioService, int $unidad_id): ResponseInterface
    {
        $precio = $precioService->getVigenteByUnidad($unidad_id);
        $response->getBody()->write(json_encode(['precio' => $precio]));
        return $response->withHeader('Content-Type', 'application/json');
    }
}
