<?php

class Atendimento_TipochamadoController extends Agro_Controller_Action
{
    const ID_STATUS_TECNICA_COMUNICADO_AJUSTE = 97;
	const ID_CONFIRMAR_CONTATO_VISTORIADOR = 112;
	const ID_CONFIRMAR_CONTATO_CORRETOR = 113;

	public $_columnList = array(
		'id' => 'Código',
 		'ds_tipo_chamado' => 'Nome',
		'ds_chave' => 'Chave',
		'ds_nome_departamento' => 'Departamento',
		'ds_nome_usuario' => 'Responsável',
		'destinatarios' => 'Destinatários'
	);

	public function getForm() {
		return new Atendimento_Form_Tipochamado();
	}

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

	public function init() {
		$this->view->title = 'Atendimento » Tipos de Chamados';
	}

	public function getFilter() {
		$User = Zend_Auth::getInstance()->getIdentity();
		$where = array();

		if ($this->getRequest()->getParam('ds_chave')) {
			$where[] = array(
				'field' => 'tc.ds_chave',
				'operator' => ' ilike ',
				'value' => '%' . $this->getRequest()->getParam('ds_chave') . '%'
			);
		}

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

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

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

		return $where;
	}

	public function gettiposchamadosAction() {
		$this->isAjax();
		$Model = $this->getModel();
		$usuarioLogado = Zend_Auth::getInstance()->getIdentity();
		$idDepartamento = $this->getRequest()->getParam('id_departamento');
		$idProposta = $this->getRequest()->getParam('id_proposta');
		$isTelaCadastroChamado = $this->getRequest()->getParam('isTelaCadastroChamado') ?? false;
		
		if ($idProposta) {
			$modelVP = new Seguro_Model_VistoriaPrevia();
			$temVP = $modelVP->getIdVistoria($idProposta);

			$statusModel = new Sistema_Model_Status;
			$statusProposta = $statusModel->getByProposta($idProposta);

			$Rs = $Model->getComboTipoChamado(
				$idDepartamento,
				$temVP,
				$statusProposta['cd_status'],
				$isTelaCadastroChamado
			);
		} else {
			$Rs = $Model->getComboTipoChamado($idDepartamento, true, 1, $isTelaCadastroChamado);
		}

		if (!Sistema_Model_Usuarios::usuarioLogadoFuncionarioAgro() && array_key_exists(self::ID_STATUS_TECNICA_COMUNICADO_AJUSTE, $Rs)
		) {
		    unset($Rs[self::ID_STATUS_TECNICA_COMUNICADO_AJUSTE]);
        }
		$isTipoUsuarioVistoriador = Sistema_Model_Usuarios::isTipoUsuarioVistoriador($usuarioLogado->tp_usuario);
		$isTipoUsuarioCorretor = Sistema_Model_Usuarios::isUsuarioLogadoCorretorPreposto($usuarioLogado);
		
		if($isTipoUsuarioVistoriador || $isTipoUsuarioCorretor && array_key_exists(self::ID_CONFIRMAR_CONTATO_VISTORIADOR, $Rs)){
			unset($Rs[self::ID_CONFIRMAR_CONTATO_VISTORIADOR]);
		}
		if($isTipoUsuarioVistoriador || $isTipoUsuarioCorretor && array_key_exists(self::ID_CONFIRMAR_CONTATO_CORRETOR, $Rs)){
			unset($Rs[self::ID_CONFIRMAR_CONTATO_CORRETOR]);
		}

		if (is_array($Rs)) {
			$this->getResponse()->setBody(Zend_Json::encode($Rs));
		} else {
			return false;
		}
	}

	public function getempresaprocessoAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$User = Zend_Auth::getInstance()->getIdentity();

		$idDepartamento = $this->getRequest()->getParam('id_departamento');
		$idProposta = $this->getRequest()->getParam('id_proposta');

		if($User->tp_usuario == 'F' && $idDepartamento == 23){
			$Processos = new Sinistro2_Model_Processos();
			$Rs = $Processos->getEmpresaProcesso($idProposta);
		}

		if (is_array($Rs)) {
			$this->getResponse()->setBody(Zend_Json::encode($Rs));
		} else {
			return false;
		}
	}

	public function getresponsavelAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $idTipoChamado = $this->getRequest()->getParam('idTipoChamado');
        return $this->getResponse()->setBody(Zend_Json::encode($this->getModel()->getIdResponsavel($idTipoChamado)));
    }

	public function getrowAction()
	{
		$this->isAjax();
		
		$idTipoChamado = $this->getRequest()->getParam('id');
		$idChamado = $this->getRequest()->getParam('idChamado');

		$tipoChamado = (new Atendimento_Model_TipoChamado())->find($idTipoChamado)->current();
		$chamado = !empty($idChamado) 
			? (new Atendimento_Model_Chamado())->find($idChamado)->current()
			: null;
		
		$dataChamado = !empty($chamado) ? $chamado->dt_criacao : date('Y-m-d');
		
		$User = Zend_Auth::getInstance()->getIdentity();
		$modelUsuarios = new Sistema_Model_Usuarios();
		
		$dados = $this->getRow();
		$dados['isFuncionarioAgro'] = $modelUsuarios->isFuncionarioAgro($User->id);
		$dados['identificacaoTipoChamado'] = $tipoChamado->ds_identificacao_tipo_chamado;
		$dados['prazoDiasUteis'] = $tipoChamado->prazo_dias_uteis;
		$dados['dataFinalPrazo'] = !empty($tipoChamado->prazo_dias_uteis) && empty($idChamado)
			? Agro_Util::somarDataDiasUteis($dataChamado, $tipoChamado->prazo_dias_uteis)
			: null;

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