<?php

class Seguro_Model_InformacoesBancariasBeneficiarios extends Agro_Db_Table_Abstract
{
    protected $_schema = 'seguro';
    protected $_name = 'informacoes_bancarias_beneficiarios';
    protected $_primary = 'id';

    public function save(array $dados)
    {
        $row = $this->getRow($dados['id']);
        $row->id_informacoes_bancarias = $dados['id_informacoes_bancarias'];
        $row->id_beneficiario = $dados['id_beneficiario'];
        $row->id_forma_pagamento = $dados['id_forma_pagamento'];

        $row->save();

        return $row;
    }

    public function getInformacoesBancariasBeneficiariosByProposta(int $idProposta): Zend_Db_Table_Rowset 
    {
        $query = $this->select()->setIntegrityCheck(false);
        
        return $this->fetchAll(
            $query
                ->from(['ibb' => 'seguro.informacoes_bancarias_beneficiarios'], 'id_forma_pagamento')
                ->join(
                    ['ib' => 'sistema.informacoes_bancarias'],
                    'ib.id = ibb.id_informacoes_bancarias',
                    [
                        'id as id_informacao_bancaria', 'id_banco', 'ds_agencia',
                        'ds_conta', 'ds_tipo_conta', 'nu_digito_agencia', 'nu_digito_conta'
                    ])
                ->join(['b' => 'seguro.beneficiarios'], 'b.id = ibb.id_beneficiario', ['id_status_arquivos'])
                ->join(
                    ['pb' => 'seguro.propostas_beneficiarios'],
                    'pb.nr_cpf_cnpj = b.cpf_cnpj',
                    'nr_cpf_cnpj')
                ->joinLeft(
                    ['sib' => 'seguro.informacoes_bancarias'],
                    'sib.id_proposta = pb.id_proposta and sib.cpf_cnpj = b.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('pb.id_proposta = ?', $idProposta)
            );
    }
}
