<?php
class Seguro_Model_CotacoesCoberturas extends Agro_Db_Table_Abstract {
    protected $_name = 'cotacoes_coberturas';
    protected $_schema = 'seguro';
    protected $_primary = 'id';
 
    public function save($dados) {
        try {
            $Row = $this->getRow($dados['id']);
            $Row->id_cobertura = $dados['id_cobertura'];
            $Row->id_cotacao = $dados['id_cotacao'];
            $Row->fl_principal = $dados['fl_principal'] == 'true' ? 't' : 'f';

            if (($dados['fl_principal'] == 't') && !$dados['vl_franquia']) {
                throw new Exception('ERRO! Franquia para cobertura principal não pode ser nula.');
            } 

            $Row->vl_franquia = $dados['vl_franquia'] ? str_replace(',','.',str_replace('.','', $dados['vl_franquia'])) : null;
            $Row->vl_taxa = $dados['vl_taxa'];
            $Row->vl_premio = str_replace(',','.',str_replace('.','',$dados['vl_premio']));

            return $Row->save();
        } catch (Exception $e) {
            return $e->getMessage();
        }
    }

    public function getCoberturas($idCotacao, $flPrincipal=null) {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from(array('cc' => 'seguro.cotacoes_coberturas'), array('id_cotacao','id_cobertura','fl_principal','vl_franquia','vl_taxa','vl_premio'));
        $select->join(array('pc' => 'produto.coberturas'), 'cc.id_cobertura = pc.id', 'ds_nome_cobertura');
        $select->where('pc.fl_ativo is true');
        $select->where('pc.fl_del is false');
        $select->where('cc.id_cotacao = ?', $idCotacao);

        if (!is_null($flPrincipal)) {
            $select->where('cc.fl_principal = ?', $flPrincipal ? 'true' : 'false');
        }

        return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchAll($select);
    }
}