<?

class Sinistro2_TransferirprocessoController extends Agro_Controller_Action{
	
	public function init() {
		$this->view->title = 'Sinistro » Processos » Transferência de Processos';
		
	}
	
	public function getModel() {
		return new Sinistro2_Model_Processos();
	}
	
	public function getForm() {
		return new Sinistro2_Form_PesquisaProcesso();
	}
	
	public function getFilter() {
		$where = array();
		$filter = array();
		
		if ($this->getRequest()->getParam('tipo_pesquisa') && $this->getRequest()->getParam('valor_pesquisa')) {
			$filter['field'] = $this->getRequest()->getParam('tipo_pesquisa');
		
			if ($filter['field'] == "id_proposta"){
	            $ModelProposta = new Seguro_Model_Propostas();	            
            	$endosso = $ModelProposta->fetchRow($ModelProposta->getAdapter()->quoteInto('id = ?',$this->getRequest()->getParam('valor_pesquisa')))->toArray();
            	
                $filter['field'] = 'id_endosso';
                $filter['operator'] = '=';
                $filter['value'] = $endosso['id_endosso'];

                $where[] = $filter;

            } elseif(is_numeric($this->getRequest()->getParam('valor_pesquisa'))){
				$filter['operator'] = '=';
				$filter['value'] = $this->getRequest()->getParam('valor_pesquisa');

			} else{
				$filter['operator'] = 'ilike';
				$filter['value'] = '%'.$this->getRequest()->getParam('valor_pesquisa').'%';
			}
		
			$where[] = $filter;
		}
		
		if ($this->getRequest()->getParam('id_empresa')) {
			$where[] = array(
				'field' => 'id_empresa',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_empresa')
			);
		}
		if ($this->getRequest()->getParam('id_status')) {
			$where[] = array(
				'field' => 'id_status',
				'operator' => '=',
				'value' => $this->getRequest()->getParam('id_status')
			);
		}
		if ($this->getRequest()->getParam('id_safra') != 'TODAS') {
			$tipo_pesquisa = $this->getRequest()->getParam('tipo_pesquisa');
			if(strcmp($tipo_pesquisa, 'id_proposta') != 0){
				$where[] = array(
					'field' => 'id_safra',
					'operator' => '=',
					'value' => $this->getRequest()->getParam('id_safra')
				);
			}
			
		}
		return $where;
	}
	
	public function indexAction() {
		$this->view->title .= " » Listagem";
		
		$this->view->formPesquisaProposta = new Seguro_Form_PesquisaProposta();
		$options = array('id'=>'Número de Processo','id_aviso'=>'Número de Aviso');
		$this->view->formPesquisaProposta->addOptions($options);
		
		$this->view->form = $this->getForm();
				
		$User = Zend_Auth::getInstance()->getIdentity();
	}

	public function getvistoriaspendentesAction() {
		$Processos = new Sinistro2_Model_Processos();
		$this->isAjax(true);
		$data = array();
		
		$this->view->processo = $Processos->find($this->getRequest()->getParam('id'))->current();
		$this->view->form = new Sinistro2_Form_Transferirprocesso();
	}
	
	public function setempresavistoriadoraAction()
    {
        $return = "alert('ATENÇÃO\n\nNão foi possível realizar a alteração.');";
        $params = $this->getRequest()->getParams();

        $this->isAjax();

        $modelProcesso = new Sinistro2_Model_Processos();
        $processo = $modelProcesso->getRow($params['id_processo']);
        $proposta = $processo->proposta();

        $modelProcessoEmpresa = new Sinistro2_Model_ProcessosEmpresas();
        $idEmpresaAtual = $modelProcessoEmpresa->getEmpresaByProcesso($params['id_processo']);
        $rowEmpresa = (new Sistema_Model_Empresas())->getRow($idEmpresaAtual);
        $params['ds_empresa_atual'] = $rowEmpresa->ds_nome_fantasia;

        $modelProcessoObs = new Sinistro2_Model_ProcessosObservacoes();
        $modelProcessoObs->save($params);

        $proposta = (new Seguro_Model_Propostas())->find($proposta->id)->current();
        $proponente = $proposta->proponente();

        /**
         * Atualiza a Empresa de Vistoria direcionada para atender o CPF/CNPJ (seguradora)
         */
        $rowProduto = (new Produto_Model_Produtos())->get((int)$proposta['id_produto']);
        $modelProponentesRecomendacao = new Seguro_Model_ProponentesRecomendacao();
        $modelProponentesRecomendacao->save([
            'id_proponente' => $proponente['id_proponente'],
            'id_empresa' => $params['id_empresa_vistoriadora'],
            'id_safra' => $rowProduto['id_safra'],
            'tp_epoca_cultivo' => $rowProduto['tp_epoca_cultivo'],
        ]);

        /**
         * Seta vistorias pendentes da empresa atual como canceladas e atribui à nova empresa
         */
        $vistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
        $arAgendamentosPendentes = $vistoriaEmpresa->getVistoriaAgendamentoPendente($params['id_processo']);

        if (count($arAgendamentosPendentes) > 0) {
            foreach ($arAgendamentosPendentes as $agendamentosPendente) {
                $vistoriaEmpresa->update(
                    array('id_empresa' => $params['id_empresa_vistoriadora']),
                    "id_vistoria = '" . $agendamentosPendente['id_vistoria'] . "'"
                );
            }
        }

        try {
            if ($params['id_processo'] && $params['id_empresa_vistoriadora']) {
                $processo = new Sinistro2_Model_ProcessosEmpresas();

                if ($processo->setEmpresaByProcesso($params['id_processo'], $params['id_empresa_vistoriadora'])) {
                    $return = 'alert("ATENÇÃO\n\nProcesso alterado com sucesso.");';
                    $return .= '$("#listVistoriasPendentes").dialog("close");';
                } else {
                    $return = 'alert("ATENÇÃO\n\nNão foi possível inserir a nova empresa vistoriadora.");';
                }
            }

            $this->getResponse()->setBody($return);
        } catch (Exception $e) {
            die($e);
        }
    }
}