<?php

class Seguro_Model_PropostasQuestionarios extends Agro_Db_Table_Abstract
{
    public const DS_CHAVE_QUEST_SUBVENCAO_ESTADUAL = 'QUEST_SUBVENCAO_ESTADUAL';
    public const DS_CHAVE_QUEST_SUBVENCAO_FEDERAL = 'QUEST_SUBVENCAO_FEDERAL';

    const QUEST_SUBVENCAO_ESTADUAL_CONFIRMADA = 154;

    protected $_log = true;
    protected $_schema = 'seguro';
    protected $_name = 'propostas_questionario';
    protected $_primary = array('id_proposta', 'id_atributo_rn');

    public $camposAlterados;

	public function fetchRespostas() {}
	
	public function deleteProposta($proposta, $idAtributo) {
		if ($idAtributo) {
			$this->getAdapter()->query("delete from seguro.propostas_questionario where id_atributo_rn = $idAtributo and id_proposta = $proposta");
		} else {
			$this->getAdapter()->query("delete from seguro.propostas_questionario where id_proposta = $proposta");
		}
	}
	
	public function save(array $values, $Proposta) {
		if (!is_object($Proposta)) {
			$Model = new Seguro_Model_Propostas();
			$Proposta = $Model->get($Proposta);
		}
		
		$Questionario = $Proposta->atributos('QUESTIONARIO');
		$Atributos = new Produto_Model_Atributos();
		
		try {
			
			foreach ($Questionario as $atributo => $value) {
				$Atributo = $Atributos->getAtributo($atributo);
				$resposta = $values[$atributo];
				
				$this->deleteProposta($Proposta->id, $Atributo->id);
				
				//não salva as questões que não estão no formulário da proposta
				if (isset($values[$atributo])) {
					//desconsidera do Save os atributos PRONAMP, ORGANICO e PIN
					if($Atributo->id != '145' && $Atributo->id != '146' && $Atributo->id != '151' && $Atributo->id != '153' && $Atributo->id != '154'){
						
						
						if ($Atributo->ds_chave_tipo_atributo == 'radio' && !$resposta) {
							$resposta = '0';
						}
						
						if($Atributo->id == '154'){
							$resposta = '0';
						}
						
						$Row = $this->createRow();
						$Row->id_atributo_rn = $Atributo->id;
						$Row->id_proposta = $Proposta->id;
						$Row->ds_resposta = $resposta;
						
						$Row->save();
					}
				}
			}
			return true;
			
		} catch (Exception $e) {
			return false;
		}
		
	}
	
	public function getResposta($idProposta, $chave) {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array('q' => 'seguro.propostas_questionario'), 'ds_resposta');
		$Select->join(array('a' => 'produto.atributos_rn'), 'a.id = q.id_atributo_rn', null);
		$Select->where('q.id_proposta = ?', $idProposta);
		$Select->where('a.ds_chave_rn = ?', $chave);
		
		return $this->getAdapter()->fetchOne($Select);
	}
	
	public function getRespostas($idProposta) {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array('q' => 'seguro.propostas_questionario'), 'ds_resposta');
		$Select->join(array('a' => 'produto.atributos_rn'), 'a.id = q.id_atributo_rn');
		$Select->where('q.id_proposta = ?', $idProposta);
		$Rs = $this->fetchAll($Select);

		$ret = array();
		foreach ($Rs as $Row) {
			$ret[$Row->ds_chave_rn] = $Row->ds_resposta;
		}

		return $ret;
	}
}