<?php
class Seguro_Model_PropostasEmailJustificativa extends Agro_Db_Table_Abstract
{
    protected $_log = true;
    protected $_schema = 'seguro';
    protected $_name = 'propostas_email_justificativa';
    protected $_primary = 'id';

    const SEGURADO_SEM_EMAIL  = 1; 
    const OUTRO = 2; 

    /**
     * Busca as justificativas do corretor ter informado seu e-mail no e-mail do segurado
     * @param int $idProposta
     * @param int|null $idPropostaEmailAssinaturaDocumento
     * @return Zend_Db_Table_Row
     */
    public function getByProposta($idProposta, $idPropostaEmailAssinaturaDocumento = null)
    {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from(array('pej' => 'seguro.propostas_email_justificativa'), '*');
        $select->where("pej.id_proposta={$idProposta}");

        $whereEmailAssinatura = "pej.id_proposta_email_assinatura_documento IS NULL";
        if ($idPropostaEmailAssinaturaDocumento != null) {
            $whereEmailAssinatura = "pej.id_proposta_email_assinatura_documento = {$idPropostaEmailAssinaturaDocumento}";
        }

        $select->where($whereEmailAssinatura);
        $select->order('pej.id DESC');
        return $this->fetchRow($select);
    }

    public function save($data)
    {
        if (empty($data['id_proposta'])) {
            return null;
        }

        $idPropostaEmailAssinaturaDocumento = !empty($data['id_proposta_email_assinatura_documento']) ? $data['id_proposta_email_assinatura_documento'] : null;
        $Row = $this->getRow($this->getByProposta($data['id_proposta'], $idPropostaEmailAssinaturaDocumento)->id);
        $Row->id_proposta = $data['id_proposta'];
        $Row->id_proposta_email_assinatura_documento = $idPropostaEmailAssinaturaDocumento;
        $Row->nr_justificativa = $data['nr_justificativa'];
        $Row->ds_justificativa = $data['ds_justificativa'];
        $Row->save();

        return $Row->id;
    }

    public function deleteByProposta($idProposta, $idPropostaEmailAssinaturaDocumento = null)
    {
        $emailJustificativa = $this->getByProposta($idProposta, $idPropostaEmailAssinaturaDocumento);
        if (!empty($emailJustificativa->id)) {
            parent::delete($emailJustificativa->id);
        }
    }

    public function add($idProposta, $row)
    {
        $PropostasEmailAssinaturaDocumento = new Seguro_Model_PropostasEmailAssinaturaDocumento();
        $propostaEmailAssinaturaDocumento = $PropostasEmailAssinaturaDocumento->getByProposta($idProposta);

        if (!empty($propostaEmailAssinaturaDocumento)) {
            $row['id_proposta_email_assinatura_documento'] = $propostaEmailAssinaturaDocumento['id'];
        }

        $data = [
            'id_proposta' => $idProposta,
            'id_proposta_email_assinatura_documento' => $row['id_proposta_email_assinatura_documento'],
            'nr_justificativa' => $row['nr_justificativa'],
            'ds_justificativa' => $row['ds_justificativa']
        ];

		return $this->save($data);
    }
}
