<?php

declare(strict_types=1);

namespace App\Controller\Portal;

/**
 * Presupuestos del cliente autenticado en el portal. Solo lectura.
 */
class PresupuestosController extends PortalAppController
{
    public function index()
    {
        $clienteId = $this->getClienteFacturacionId();

        $query = $this->fetchTable('Presupuestos')->find()
            ->contain(['PresupuestosInvoices'])
            ->where(['Presupuestos.cliente_facturacion_id' => $clienteId])
            ->orderDesc('Presupuestos.created');

        $presupuestos = $this->paginate($query);

        foreach ($presupuestos as $presupuesto) {
            $facturado = 0;
            foreach ($presupuesto->presupuestos_invoices as $pi) {
                $facturado += (float) $pi->monto_facturado;
            }
            $presupuesto->_saldoPendiente = round((float) $presupuesto->total - $facturado, 2);
        }

        $this->set(compact('presupuestos'));
    }

    public function view($id = null)
    {
        $clienteId = $this->getClienteFacturacionId();

        $presupuesto = $this->fetchTable('Presupuestos')->find()
            ->contain([
                'PresupuestosServicios' => ['Servicios'],
                'PresupuestosInvoices.Invoices',
            ])
            ->where([
                'Presupuestos.id' => $id,
                'Presupuestos.cliente_facturacion_id' => $clienteId,
            ])
            ->firstOrFail();

        $this->set(compact('presupuesto'));
    }
}
