<?php

class Comercializacao_Model_ComercializacoesOrcamentos extends Agro_Db_Table_Abstract
{
    protected $_schema = 'comercializacao';
    protected $_name = 'comercializacoes_orcamentos';
    protected $_primary = array('id_comercializacao', 'id_proposta');

    public function save($dados)
    {
        $row = $this->getComercializacao($dados['id_comercializacao']);

        if (!$row) {
            $row = $this->createRow();
        }

        $modelPropostas = new Seguro_Model_Propostas();
        $rowPropostas = $modelPropostas->get($dados['id_proposta']);

        if (!$rowPropostas) {
            throw new Exception('Orçamento inválido.');
        }

        $modelPropostas->save($dados);

        $row->id_comercializacao = $dados['id_comercializacao'];
        $row->id_proposta = $dados['id_proposta'];

        return $row->save();
    }

    public function getComercializacao(int $idComercializacao)
    {
        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('co' => 'comercializacao.comercializacoes_orcamentos'), '*');
        $select->join(array('c' => 'comercializacao.comercializacoes'), 'co.id_comercializacao = c.id', '*');
        $select->where('id_comercializacao = ?', $idComercializacao);

        return $this->fetchRow($select);
    }

    public function getComercializacaoByProposta(int $idProposta)
    {
        $select = $this->select();
        $select->setIntegrityCheck(false);
        $select->from(array('co' => 'comercializacao.comercializacoes_orcamentos'), '*');
        $select->join(array('c' => 'comercializacao.comercializacoes'), 'co.id_comercializacao = c.id', '*');
        $select->where('id_proposta = ?', $idProposta);

        return $this->fetchRow($select);
    }
}
