<?php

class Seguro_Model_InformacoesBancariasPropostas extends Agro_Db_Table_Abstract
{
    protected $_schema = 'seguro';
    protected $_name = 'informacoes_bancarias_propostas';
    protected $_primary = 'id';

    public function add(int $idProposta, array $row)
    {
        $idInformacoesBancarias = $this->_db->fetchOne('SELECT max(id) FROM sistema.informacoes_bancarias');

        return $this->save([
            'id_informacoes_bancarias' => $idInformacoesBancarias,
            'id_proposta' => $idProposta,
            'fl_titular_conta' => $row['fl_titular_conta'],
            'fl_conta_conjunta' => $row['fl_conta_conjunta']
       ]);
    }

    public function delete($id, $field = 'id')
    {
        return parent::delete($id, $field); // TODO: Change the autogenerated stub
    }

    public function save(array $dados)
    {
        $row = $this->getRow($dados['id']);
        
        $row->id_informacoes_bancarias = $dados['id_informacoes_bancarias'];
        $row->id_proposta = $dados['id_proposta'];
        $row->fl_titular_conta = $dados['fl_titular_conta'] ? 't' : 'f';
        $row->fl_conta_conjunta = $dados['fl_conta_conjunta'] ? 't' : 'f';
        
        $row->save();

        return $row;
    }

    public function getInformacoesBancariasProponentesByProposta(int $idProposta): Zend_Db_Table_Rowset 
    {
        $query = $this->select()->setIntegrityCheck(false);

        return $this->fetchAll(
            $query
                ->from(['ibp' => 'seguro.informacoes_bancarias_propostas'], 'fl_conta_conjunta')
                ->join(
                    ['ib' => 'sistema.informacoes_bancarias'],
                    'ib.id = ibp.id_informacoes_bancarias',
                    [
                        'id as id_informacao_bancaria', 'id_banco', 'ds_agencia',
                        'ds_conta', 'ds_tipo_conta', 'nu_digito_agencia', 'nu_digito_conta'
                    ])
                ->join(
                    ['pp' => 'seguro.propostas_proponentes'],
                    'pp.id_proposta = ibp.id_proposta',
                    'cpf_cnpj as nr_cpf_cnpj')
                ->joinLeft(
                    ['sib' => 'seguro.informacoes_bancarias'],
                    'sib.id_proposta = pp.id_proposta and sib.cpf_cnpj = pp.cpf_cnpj',
                    [
                        'id as id_seguro_informacoes_bancarias',
                        'ds_tipo_conta as info_ds_tipo_conta',
                        'fl_conta_conjunta as info_fl_conta_conjunta'
                    ])
                ->where('pp.id_proposta = ?', $idProposta)
            );
    }
}