<?php
    require_once "atendimento/controllers/PropostaajaxController.php";

    class Endosso_ConsultaController extends Agro_Controller_Action {

		public function getModel() {
            return new Endosso_Model_Consulta();
        }

    	public function indexAction(){
            $this->view->title = 'Seguro » Endosso » Consultar Endosso';
			parent::indexAction();
    	}

        public function historicoAction() {
            $this->getHelper('layout')->disableLayout();
            $Status = new Endosso_Model_SolicitacaoStatus();
            $Row = $Status->listStatus($this->getRequest()->getParam('id'));
            $this->view->historicos = $Row;
        }

        public function getForm() {
            $Form = new Endosso_Form_Solicitacao();
            $params = $this->getRequest()->getParams();
            $Form->populate($params);
            return $Form;
        }

        public function init() {
            $this->view->title = 'Seguro » Endosso » Solicitar Endosso';
        }

        public function listAction() {

            $this->getHelper('layout')->disableLayout();

            $Model = $this->getModel();
            $where = $this->getFilter();

            $this->view->params = $this->getRequest()->getParams();
            $this->_paginator = $this->getRequest()->getParam('show_paginacao');

            if ($this->getRequest()->getParam("o")) {
                $Model->_order = trim($this->getRequest()->getParam("o") .' '. $this->getRequest()->getParam("s"));
            }

            $recordsPerPage = ($this->recordsPerPage ? $this->recordsPerPage : RECORDS_PER_PAGE);
            $Rs = $Model->fetchAllPaginator($where, $this->getRequest()->getParam('page'), $recordsPerPage, $this->_paginator);

            $this->view->solicitacoes = $Rs;

            if (isset($this->view->params['origemPrevia'])) {
                $this->view->origemPrevia = $this->view->params['origemPrevia'] === 'true';
            }

            parent::listAction();
        }

        public function viewAction() {
            $this->getHelper('layout')->setLayout('popup');
            $this->view->title = "Seguro » Endosso » Visualizar Solicitação de Endosso";
            $Propostas = new Seguro_Model_Propostas();
            $this->view->proposta = $Propostas->getProposta($this->getRequest()->getParam('id_proposta'));

            $Tipos = new Endosso_Model_TiposSolicitacao();
            $this->view->tipo = $Tipos->find($this->getRequest()->getParam('id_tipo'))->current();

            $Solicitacoes = $this->getModel();
            $this->view->solicitacao = $Solicitacoes->find($this->getRequest()->getParam('id'))->current();

        }

        public function getFilter() {
            $where = parent::getFilter();

            if ($this->getRequest()->getParam('id_proposta_mae')) {
                $ids = explode(" ", trim($this->getRequest()->getParam('id_proposta_mae')));
                $ids = implode(',', $ids);

                $where[] = array(
                    'field' => 'seguro.id_proposta_mae(sp.id)',
                    'operator' => 'in',
                    'value' => "({$ids})"
                );

                return $where;
            }

            if ($this->getRequest()->getParam('id_proposta')) {
                $ids = explode(" ", trim($this->getRequest()->getParam('id_proposta')));
                $ids = implode(',', $ids);

                $where[] = array(
                    'field' => 'sp.id',
                    'operator' => 'in',
                    'value' => "({$ids})"
                );

                return $where;
            }

            if ($this->getRequest()->getParam('id_safra') && (!$this->getRequest()->getParam('id_proposta') && (!$this->getRequest()->getParam('id_solicitacao')))) {
            	$where[] = array(
            		'field' => 'pp.id_safra',
            		'operator' => '=',
            		'value' => $this->getRequest()->getParam('id_safra')
            	);
            }

        	if ($this->getRequest()->getParam('id_solicitacao')) {
        		$where[] = array(
        			'field' => 'spes.id',
        			'operator' => '=',
        			'value' => $this->getRequest()->getParam('id_solicitacao')
        		);
        	}

        	if ($this->getRequest()->getParam('id_produto')) {
        		$where[] = array(
        			'field' => 'pp.id',
        			'operator' => '=',
        			'value' => $this->getRequest()->getParam('id_produto')
        		);
        	}

        	if ($this->getRequest()->getParam('id_status_filtro')) {

        		$where[] = array(
        			'field' => 'spes.id_status',
        			'operator' => '=',
        			'value' => $this->getRequest()->getParam('id_status_filtro')
        		);
        	}

        	if ($this->getRequest()->getParam('is_consulta') == 'false' ) {

        		$where[] = array(
        				'field' => 'spes.ds_arquivo is null',
        				'operator' => 'or',
        				'value' => "spes.ds_arquivo = ''"
        		);
        	}

            if ($this->getRequest()->getParam('assinada')) {

            	$where[] = array(
                		'field' => 'spesa.ds_nome_arquivo',
                        'operator' => 'is',
                        'value' => ($this->getRequest()->getParam('assinada') == 'S' ? 'not null' : 'null')
                );
            }

            if ($this->getRequest()->getParam('id')) {
                $where[] = array(
                    'field' => 'spes.id',
                    'operator' => '=',
                    'value' => $this->getRequest()->getParam('id')
                );
            }

            if ($this->getRequest()->getParam('id_tipo_solicitacao')) {
                $idTipoSolicitacao = $this->getRequest()->getParam('id_tipo_solicitacao');
                $operator = '=';

                if ((int) $idTipoSolicitacao === Endosso_Model_TiposSolicitacao::ID_STATUS_ALTERACAO_APOLICE) {
                    $idTipoSolicitacao = "("
                        . Endosso_Model_TiposSolicitacao::ID_COM_MOVIMENTO_PREMIO
                        . ", " . Endosso_Model_TiposSolicitacao::ID_SEM_MOVIMENTO_PREMIO
                        . ", " . Endosso_Model_TiposSolicitacao::ID_STATUS_ALTERACAO_APOLICE
                        . ")";
                    $operator = 'in';
                }

            	$where[] = array(
            		'field' => 'sets.id',
            		'operator' => $operator,
            		'value' => $idTipoSolicitacao
            	);
            }

            $User = Zend_Auth::getInstance()->getIdentity();
            if ($User->tp_usuario === 'C') {
                $where[] = array(
                  'field' => 'pc.id_usuario',
                  'operator' => '=',
                  'value' => $User->id
                );
            }

            if ($User->tp_usuario === 'P') {
                $where[] = array(
                  'field' => 'spes.id_usuario_criacao',
                  'operator' => '=',
                  'value' => $User->id
                );
            }

            if ($this->getRequest()->getParam('id_corretor')) {
                $where[] = array(
                  'field' => 'pc.id_usuario',
                  'operator' => '=',
                  'value' => $this->getRequest()->getParam('id_corretor')
                );
            }

            if ($this->getRequest()->getParam('id_preposto')) {
                $where[] = array(
                  'field' => 'spes.id_usuario_criacao',
                  'operator' => '=',
                  'value' => $this->getRequest()->getParam('id_preposto')
                );
            }

            if ($this->getRequest()->getParam('id_responsavel_search')) {
                $where[] = array(
                    'field' => 'spes.id_usuario_responsavel',
                    'operator' => '=',
                    'value' => $this->getRequest()->getParam('id_responsavel_search')
                );
            }

        	return $where;
        }

        public function orientacaoAction(){
        	$this->getHelper('layout')->disableLayout();
        	$Tipos = new Endosso_Model_TiposSolicitacao();
        	$Row = $Tipos->find($this->getRequest()->getParam('id_tipo'))->current();
        	$this->view->orientacao = $Row->ds_orientacao;
        }


        public function cancelamentoAction(){

        	$this->isAjax(true);
			$params = $this->_getAllParams();

        	if($this->getRequest()->isPost()){

        		$dados['id_solicitacao'] = $this->getRequest()->getParam('id');
        		$dados['ds_observacao'] = $this->getRequest()->getParam('motivo_cancelamento');
        		$dados['fl_cancelamento_corretor'] = $this->getRequest()->getParam('fl_cancelamento_corretor');
        		$dados['id_status'] = $this->getRequest()->getParam('id_status');

                $sistemaStatus = new Sistema_Model_Status();
                $statusSolicitadoCancelamento = $sistemaStatus->getId('SOLICITADO_CANCELAMENTO', 'SOLICITACOES_ENDOSSO');

                if (!empty($statusSolicitadoCancelamento)) {
                    $dados['id_status'] = $statusSolicitadoCancelamento;
                }

	        	$Status = new Endosso_Model_SolicitacaoStatus();
				$Status->save($dados);

				$Solicitacao = new Endosso_Model_Solicitacao();
				$RowSolicitacao = $Solicitacao->find($dados['id_solicitacao'])->current();
				$RowSolicitacao->id_status = $dados['id_status'];
				$RowSolicitacao->save();

        	}

        	$this->view->dados = $params;

        }

        public function formAction() {
            $Propostas = new Seguro_Model_Propostas();
            $proposta = $Propostas->get($this->getRequest()->getParam('id_proposta'));
            $this->view->id_proposta = $proposta->id_proposta_mae;
            $this->view->id_tipo = $this->getRequest()->getParam('id_tipo');
            $this->view->id = $this->getRequest()->getParam('id');

            $modelPropostasCroquis = new Seguro_Model_PropostasCroquis();
            $retornoPropostasCroquis = $modelPropostasCroquis->getCroquisSolicitacao($this->getRequest()->getParam('id'));

            $this->view->temPoligonoSolicitacao = !empty($retornoPropostasCroquis);

            parent::formAction();
        }

        public function afterSave($id)
        {
            if (in_array($this->getRequest()->getParam('id_status'), [181, 183])) {

                $propostaAjaxController = new Atendimento_PropostaajaxController($this->getRequest(), $this->getResponse());
                $propostaAjaxController->getHelper('layout')->enableLayout();

                $this->enviarEmail($propostaAjaxController);
            }
        }
    }
