<?

class Sinistro_TransferirprocessoController extends Agro_Controller_Action{
	
	public function init() {
		$this->view->title = 'Sinistro » Processos » Transferência de Processos';
		
	}
	
	public function getModel() {
		return new Sinistro_Model_Processos();
	}
	
	public function getForm() {
		return new Sinistro_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')) {
			$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 Sinistro_Model_Processos();
		$this->isAjax(true);
		$data = array();
		
		$this->view->processo = $Processos->find($this->getRequest()->getParam('id'))->current();
		$this->view->form = new Sinistro_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 Sinistro_Model_Processos();
		$Processo      = $ModelProcesso->getRow($params['id_processo']);
		$Proposta      = $Processo->proposta();
		
		$ModelProcessoObs = new Sinistro_Model_ProcessosObservacoes();
		$ModelProcessoObs->save($params);
		
		$ModelProposta   = new Seguro_Model_Propostas();
		$ModelProponente = new Seguro_Model_Proponentes();
		$Proposta        = $ModelProposta->find($Proposta->id)->current();
		$Proponente      = $Proposta->proponente();
		
		$ModelProponente->update(array('id_empresa_vistoria' => $params['id_empresa_vistoriadora']), "cpf_cnpj = '".$Proponente['cpf_cnpj']."'");
		
		try {
			if ($params['id_processo'] && $params['id_empresa_vistoriadora']) {
				$Processo = new Sinistro_Model_ProcessosEmpresas();
				
				if ($Processo->setEmpresaByProcesso($params['id_processo'], $params['id_empresa_vistoriadora'])) {
					$return = 'alert("ATENÇÃO\n\nProcesso alterado com sucesso.");$("#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);
		}
	}
	
	public function transferirprocessoAction(){
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$idProcesso = $this->getRequest()->getParam('idProcesso');
		$idEmpresaVistoriadora  = $this->getRequest()->getParam('idEmpresaVistoriadora');
		
		$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
		$Db->beginTransaction();
		
		$post = $this->getRequest()->getParams();
		try {
			
			if (is_array($post['vistorias_pendentes']) && count($post['vistorias_pendentes']) > 0){
				$hasVistoriaPendente = true;
				$VistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
				foreach ($post['vistorias_pendentes'] as $item) {
					if ($post['fl_vistoria_pendente-' . $item] == 'N') {
						$VistoriaEmpresa->delete($item);
						
						$data = array();				
						$data['id_vistoria'] = $item;				
						$data['id_empresa'] = $idEmpresaVistoriadora;
						$VistoriaEmpresa->insert($data);				
					}
				}
			}
				
			$ProcessoEmpresa = new Sinistro_Model_ProcessosEmpresas();
			$where = 'id_processo = ' . $idProcesso . ' and fl_ativo = true';
			$processoEmpresa = $ProcessoEmpresa->fetchRow($where);
			$processoEmpresa = $processoEmpresa->toArray();
			
			$ProcessoEmpresa->update(
				array('fl_ativo'=>'false'),
				"id_processo = {$processoEmpresa['id_processo']} and
				id_empresa = {$processoEmpresa['id_empresa']}"
			);
			
			$data = array();
			$data['id_processo'] = $idProcesso;
			$data['id_empresa'] = $idEmpresaVistoriadora;
				
			$ProcessoEmpresa->insert($data);
			
			$Db->commit();
			
			$this->getResponse()->setBody(Zend_Json::encode(true));
		}catch(Exception $e){
			$Db->rollback();
		}
	}
}