<?php

class Sistema_InformacaoBancariaController extends Agro_Controller_Action {
	protected $_paginator = false;
	
	public function init() {
		$this->getHelper('layout')->disableLayout();
	}
	
	public function getForm() {
		$Form = new Sistema_Form_InformacoesBancarias();
		
		$Form->populate($this->getRequest()->getParams());
		
		return $Form;
	}
	
	public function getModel() {
		return new Sistema_Model_InformacoesBancarias();
	}
	
	public function getFilter() {
		$where = array();
		
		if (array_key_exists('id_empresa', $this->getRequest()->getParams())) {
			$where[] = array (
				'field' => 'ibe.id_empresa',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_empresa')
			);
		} else if (array_key_exists('id_corretor', $this->getRequest()->getParams())) {
			$where[] = array (
				'field' => 'ibc.id_corretor',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_corretor')
			);
		}
		
		if ($this->getRequest()->getParam('id_corretor')) {
			$where[] = array (
				'field' => 'ibc.id_corretor',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_corretor')
			);
		}
		
		return $where;
	}
	
	public function saveAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = $this->getModel();
		
		if (!$Model->save($this->getRequest()->getParams())) {
			$this->getResponse()->setBody(MSG_ERROR);
		} else {
			$this->getResponse()->setBody(MSG_SUCCESS);
		}
	}

	public function informacoesbancariaspropostaAction()
    {
        $this->isAjax();
        $retorno = ['temInformacoes' => false];
        $parametros = $this->getRequest()->getParams();

        $rowInformacoesBancarias = $this->getModel()->getInformacoesBancariasByProposta($parametros['id_proposta']);

        if (!empty($rowInformacoesBancarias)) {
            $retorno['temInformacoes'] = true;
            $retorno['idInformacoesBancarias'] = $rowInformacoesBancarias['id'];
            $retorno['id_banco'] = $rowInformacoesBancarias['id_banco'];
            $retorno['ds_agencia'] = $rowInformacoesBancarias['ds_agencia'];
            $retorno['ds_conta'] = $rowInformacoesBancarias['ds_conta'];
            $retorno['ds_tipo_conta'] = $rowInformacoesBancarias['ds_tipo_conta'];
            $retorno['nu_digito_agencia'] = $rowInformacoesBancarias['nu_digito_agencia'];
            $retorno['nu_digito_conta'] = $rowInformacoesBancarias['nu_digito_conta'];
            $retorno['fl_titular_conta'] = $rowInformacoesBancarias['fl_titular_conta'] ? 'S' : 'N';
            $retorno['fl_conta_conjunta'] = $rowInformacoesBancarias['fl_conta_conjunta'] ? 'S' : 'N';
        }

        $this->getResponse()->setBody(Zend_Json::encode($retorno));
    }

    public function salvarinformacoesbancariaspropostaAction()
    {
        $this->isAjax();
        $retorno = ['erro' => false, 'mensagem' => 'Dados salvos com sucesso.'];
        $adapter = Agro_Db_Table_Abstract::getDefaultAdapter();
        $parametros = $this->getRequest()->getParams();

        try {
            $adapter->beginTransaction();

            $dadosBancarios = ['id' => $parametros['idInformacoesBancarias']];

            if ($parametros['titularConta'] === 'S') {
                $dadosBancarios['id_banco'] = $parametros['id_banco_titular'];
                $dadosBancarios['ds_agencia'] = $parametros['ds_agencia_titular'];
                $dadosBancarios['nu_digito_agencia'] = $parametros['nu_digito_agencia_titular'];
                $dadosBancarios['ds_conta'] = $parametros['ds_conta_titular'];
                $dadosBancarios['nu_digito_conta'] = $parametros['nu_digito_conta'];
                $dadosBancarios['ds_tipo_conta'] = $parametros['tipoConta'];
            } else {
                $dadosBancarios['id_banco'] = $parametros['id_banco_nao_titular'];
                $dadosBancarios['ds_agencia'] = $parametros['ds_agencia_nao_titular'];
                $dadosBancarios['nu_digito_agencia'] = $parametros['nu_digito_agencia_nao_titular'];
                $dadosBancarios['ds_tipo_conta'] = 'O';
            }

            $rowInformacoesBancarias = (new Sistema_Model_InformacoesBancarias())->save($dadosBancarios);

            $dadosBancariosPropostas = [
                'id_informacoes_bancarias' => $rowInformacoesBancarias['id'],
                'id_proposta' => $parametros['id_proposta'],
                'fl_titular_conta' => $parametros['titularConta'] === 'S',
            ];

            $modelInformacoesBancariasPropostas = new Seguro_Model_InformacoesBancariasPropostas();
            $modelInformacoesBancariasPropostas->delete('id_informacoes_bancarias', $rowInformacoesBancarias['id']);

            $modelInformacoesBancariasPropostas->save($dadosBancariosPropostas);

            $adapter->commit();
        } catch (Exception $erro) {
            $adapter->rollback();
            $retorno['erro'] = true;
            $retorno['mensagem'] = 'Erro ao salvar as informações bancárias.';
        }

        $this->getResponse()->setBody(Zend_Json::encode($retorno));
    }
}
