<?php

class Endosso_Model_SolicitacaoStatus extends Agro_Db_Table_Abstract {
    protected $_rowClass = 'Seguro_Model_Row_Proposta';
    protected $_name = 'propostas_endosso_solicitacao_status';
    protected $_schema = 'seguro';
    protected $_primary = 'id';

    public function getStatusBySolicitacao($id_solicitacao) {

        $Select = $this->select()->setIntegrityCheck(false);
        $Select->from(array('spess' => 'seguro.propostas_endosso_solicitacao_status'), array('fl_ativo','id_solicitacao','id_status','ds_observacao','id', 'id_usuario_criacao'));
        $Select->where('spess.id_solicitacao = ?', $id_solicitacao);
        $Select->where('spess.fl_ativo = true');

        return $this->fetchAll($Select);
    }

    public function listStatus($id_solicitacao) {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from(array('spess' => 'seguro.propostas_endosso_solicitacao_status'), array('dt_criacao', 'ds_observacao'));
        $select->join(array('ss' => 'sistema.status'), 'ss.id = spess.id_status', 'ds_status');
        $select->join(array('su' => 'sistema.usuarios'), 'su.id = spess.id_usuario_criacao', 'ds_nome_usuario');
        $select->where('spess.id_solicitacao = ?', $id_solicitacao);
        $select->order('dt_criacao desc');
        return $this->fetchAll($select);
    }

    public function save(array $data) {
        try {
        	
        	$this->getAdapter()->query('update seguro.propostas_endosso_solicitacao_status set fl_ativo = false where id_solicitacao = '.$data['id_solicitacao']);
        	
        	$Row = $this->createRow();

            $Row->id_solicitacao = $data['id_solicitacao'];
            $Row->id_status = $data['id_status'];
            $Row->ds_observacao = $data['ds_observacao'];

            if ($data['fl_cancelamento_corretor']) {
                $Row->fl_cancelamento_corretor = $data['fl_cancelamento_corretor'];
            }

            $Row->save();

            return true;
        } catch (Exception $e) {
        	
            $this->setMessage($e->getMessage());
            return false;
        }
    }
    
    public function hasSolicitacaoCancelamentoCorretor($idSolicitacao){
    	
    	$select = $this->select()->setIntegrityCheck(false);
        $select->from(array('spess' => 'seguro.propostas_endosso_solicitacao_status'), 'fl_cancelamento_corretor');
        $select->where('spess.id_solicitacao = ?', $idSolicitacao);
        $select->where('spess.fl_cancelamento_corretor = ?', 'true');
		
        if($this->_db->fetchOne($select)){
        	return true;
        }
        
        return false;
    }
}
