<?php

class Relatorio_CorretorController extends Agro_Controller_Report {

	public function init() {
		$this->view->title = 'Relatórios » Corretor » Relatórios disponíveis';
		ini_set('memory_limit','512M');
	}

	public function iniciocolheitaAction() {

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

		$Model = new Relatorio_Model_Corretor();

		$Rs = $Model->relatorioInicioColheita($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), Zend_Auth::getInstance()->getIdentity()->id, Zend_Auth::getInstance()->getIdentity()->tp_usuario);

		$titles = array(
		    'processo' => 'Processo',
			'proposta' => 'Proposta',
			'apolice' => 'Apólice',
		    'ds_nome_produto' => 'Produto',
			'item' => 'Item',
			'quadra' => 'Quadra',
		    'ds_nome_variedade' => 'Variedade',
		    'ds_nome_proponente' => 'Segurado',
			'data_inicio' => 'Data de Início',
			'data_envio_inicio' => 'Data do Envio',
		    'preposto' => 'Sublogin',
		    'digitador' => 'Digitador',
		);

		$format = array(
			'proposta' => array('align' => 'center'),
			'apolice' => array('align' => 'center'),
		    'processo' => array('align' => 'center'),
		    'ds_nome_produto' => array('align' => 'center'),
			'item' => array('align' => 'center'),
			'quadra' => array('align' => 'left'),
			'data_inicio' => array('align' => 'center'),
			'data_envio_inicio' => array('align' => 'center'),
		);

		switch ($this->getRequest()->getParam('tipo')) {
			case 'excel':
				$Csv = new Agro_Plugin_Rs2Csv();
				$Csv->setRecordSet($Rs);
				$Csv->setType("application/octet-stream");
				$Csv->setFileName("relatorio_inicio.csv");
				$Csv->setDisposition("attachment");
				$Csv->setTitles($titles);
				$Csv->setSeparator(";");
				$Csv->getCsv();
				break;
			case 'html':
				$Html = new Agro_Plugin_Rs2Html();
				$Html->setRecordSet($Rs);
				$Html->setTitles($titles);
				$Html->setFormat($format);
				$Html->getHtml();
				break;
		}
	}

	public function encerramentocolheitaAction() {

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

		$Model = new Relatorio_Model_Corretor();

		$Rs = $Model->relatorioEncerramentoColheita($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), Zend_Auth::getInstance()->getIdentity()->id, Zend_Auth::getInstance()->getIdentity()->tp_usuario);

		$titles = array(
		    'processo' => 'Processo',
			'proposta' => 'Proposta',
			'apolice' => 'Apólice',
		    'ds_nome_produto' => 'Produto',
			'item' => 'Item',
			'quadra' => 'Quadra',
		    'ds_nome_variedade' => 'Variedade',
		    'ds_nome_proponente' => 'Segurado',
			'data_encerramento' => 'Data de Encerramento',
			'data_envio_encerramento' => 'Data do Envio',
		    'preposto' => 'Sublogin',
		    'digitador' => 'Digitador',
		);

		$format = array(
			'proposta' => array('align' => 'center'),
			'apolice' => array('align' => 'center'),
		    'processo' => array('align' => 'center'),
		    'ds_nome_produto' => array('align' => 'center'),
			'item' => array('align' => 'center'),
			'quadra' => array('align' => 'left'),
			'data_encerramento' => array('align' => 'center'),
			'data_envio_encerramento' => array('align' => 'center'),
		);

		switch ($this->getRequest()->getParam('tipo')) {
			case 'excel':
				$Csv = new Agro_Plugin_Rs2Csv();
				$Csv->setRecordSet($Rs);
				$Csv->setType("application/octet-stream");
				$Csv->setFileName("relatorio_encerramento.csv");
				$Csv->setDisposition("attachment");
				$Csv->setTitles($titles);
				$Csv->setSeparator(";");
				$Csv->getCsv();
				break;
			case 'html':
				$Html = new Agro_Plugin_Rs2Html();
				$Html->setRecordSet($Rs);
				$Html->setTitles($titles);
				$Html->setFormat($format);
				$Html->getHtml();
				break;
		}
	}

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

	    $Parcelas   = new Relatorio_Model_Corretor();
	    $RsParcelas = $Parcelas->relatorioParcelas($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), Zend_Auth::getInstance()->getIdentity()->id, Zend_Auth::getInstance()->getIdentity()->tp_usuario, false);

	    $titles = array(
	            'id_proposta' => 'Proposta',
	            'nr_endosso' => 'Endosso ',
	            'ds_nome_proponente' => 'Segurado',
	    		'ds_nome_cultura' => 'Cultura',
	            'ds_nome_fantasia' => 'Corretor',
	            'sublogin' => 'Sublogin',
	    		'dt_vigencia_inicio' => 'Início de Vigência',
	    		'nr_parcela' => 'N° Parcela',
	    		'vl_segurado' => 'Valor Segurado',
	    		'dt_vencimento' => 'Vencimento',
	    		'fl_pago' => 'Status Pagamento',
	    		'dt_vencto_prorrogado' => 'Vencimento Prorrogado'
	    );

	    switch ($this->getRequest()->getParam('tipo')) {
	        case 'excel':
	            $Csv = new Agro_Plugin_Rs2Csv();
	            $Csv->setRecordSet($RsParcelas);
	            $Csv->setType("application/octet-stream");
	            $Csv->setFileName("relatorio_parcelas.csv");
	            $Csv->setDisposition("attachment");
	            $Csv->setTitles($titles);
	            $Csv->setSeparator(";");
	            $Csv->getCsv();

	            break;
	        case 'html':
	            $Html = new Agro_Plugin_Rs2Html();
	            $Html->setRecordSet($RsParcelas);
	            $Html->setTitles($titles);
	            $Html->getHtml();

	            break;
	    }
	}

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

		$Parcelas   = new Relatorio_Model_Corretor();
		$RsParcelas = $Parcelas->relatorioInadimplentes($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), Zend_Auth::getInstance()->getIdentity()->id, Zend_Auth::getInstance()->getIdentity()->tp_usuario);

		$titles = array(
				'id_proposta' => 'Proposta',
				'nr_endosso' => 'Endosso ',
				'ds_nome_proponente' => 'Segurado',
				'ds_nome_cultura' => 'Cultura',
				'ds_nome_fantasia' => 'Corretor',
				'sublogin' => 'Sublogin',
				'dt_vigencia_inicio' => 'Início de Vigência',
				'nr_parcela' => 'N° Parcela',
				'vl_segurado' => 'Valor do Segurado',
				'dt_vencimento' => 'Vencimento',
				'fl_pago' => 'Parcela Quitada?'
		);

		switch ($this->getRequest()->getParam('tipo')) {
			case 'excel':
				$Csv = new Agro_Plugin_Rs2Csv();
				$Csv->setRecordSet($RsParcelas);
				$Csv->setType("application/octet-stream");
				$Csv->setFileName("relatorio_parcelas.csv");
				$Csv->setDisposition("attachment");
				$Csv->setTitles($titles);
				$Csv->setSeparator(";");
				$Csv->getCsv();

				break;
			case 'html':
				$Html = new Agro_Plugin_Rs2Html();
				$Html->setRecordSet($RsParcelas);
				$Html->setTitles($titles);
				$Html->getHtml();

				break;
		}
	}
	
	public function documentofisicopendenteAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
	
		$Parcelas   = new Relatorio_Model_Corretor();
		$RsParcelas = $Parcelas->relatorioDocumentoFisico($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), Zend_Auth::getInstance()->getIdentity()->id, Zend_Auth::getInstance()->getIdentity()->tp_usuario, true);
	
		$titles = array(
				'id_safra' => 'Safra',
				'id_proposta' => 'Proposta',
				'nr_endosso' => 'Endosso',
				'ds_status' => 'Status',
				'ds_nome_proponente' => 'Segurado',
				'ds_nome_cultura' => 'Cultura',
				'ds_nome_fantasia' => 'Corretor',
				'sublogin' => 'Sublogin',
				'dt_transmissao' => 'Data de Transmissão',
				'dt_transmissao_dif_hoje' => 'Nº de dias da Transmissão',
				'ds_status_doc_fisico' => 'Situação Proposta',
				'pendencias' => 'Pendência'
		);
	
		switch ($this->getRequest()->getParam('tipo')) {
			case 'excel':
				$Csv = new Agro_Plugin_Rs2Csv();
				$Csv->setRecordSet($RsParcelas);
				$Csv->setType("application/octet-stream");
				$Csv->setFileName("relatorio_doc_fisico.csv");
				$Csv->setDisposition("attachment");
				$Csv->setTitles($titles);
				$Csv->setSeparator(";");
				$Csv->getCsv();
	
				break;
			case 'html':
				$Html = new Agro_Plugin_Rs2Html();
				$Html->setRecordSet($RsParcelas);
				$Html->setTitles($titles);
				$Html->getHtml();
	
				break;
		}
	}
	
	public function analiseduplicadaAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$Model = new Relatorio_Model_Tecnica();
		$Rs = $Model->relatorioAnaliseDuplicadas($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));

		$titles = array(
				'id_proposta' => 'Proposta',
				'dt_vigencia_inicio' => 'Início Vigência',
				'ds_nome_fantasia' => 'Corretor',
				'ds_nome_usuario' => 'Digitador',
				'ds_nome_produto' => 'Produto',
				'ds_motivo' => 'Restrição',
				'ds_nome_safra' => 'Safra'
		);

		$format = array(
				'id_proposta' => array('align' => 'center'),
				'dt_vigencia_inicio' => array('align' => 'center'),
				'ds_nome_fantasia' => array('align' => 'left'),
				'ds_nome_usuario' => array('align' => 'left'),
				'ds_nome_produto' => array('align' => 'left'),
				'ds_motivo' => array('align' => 'left'),
				'ds_nome_safra' => array('align' => 'center')
		);

		switch ($this->getRequest()->getParam('tipo')) {
			case 'excel':
				$Csv = new Agro_Plugin_Rs2Csv();
				$Csv->setRecordSet($Rs);
				$Csv->setType("application/octet-stream");
				$Csv->setFileName("relatorio_analise_duplicadas.csv");
				$Csv->setDisposition("attachment");
				$Csv->setTitles($titles);
				$Csv->setSeparator(";");
				$Csv->getCsv();

				break;
			case 'html':
				$Html = new Agro_Plugin_Rs2Html();
				$Html->setRecordSet($Rs);
				$Html->setFormat($format);
				$Html->setTitles($titles);
				$Html->getHtml();

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

		if(!$this->getRequest()->getParam('dt_inicio') || !$this->getRequest()->getParam('dt_fim')){
			echo "Por favor, informe a Data de Transmissão.";
			return false;
		} else {
			$inicio = Agro_Util::formatDate($this->getRequest()->getParam('dt_inicio'), Zend_Date::W3C);
			$final = Agro_Util::formatDate($this->getRequest()->getParam('dt_fim'), Zend_Date::W3C);
		}
		
		$Model = new Relatorio_Model_Tecnica();
		$Rs = $Model->importacaocotrijal($inicio, $final, $this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'));
		
		foreach ($Rs as $line){
			$output .= $line['row_proposta']."\n";
		}
		
		switch ($this->getRequest()->getParam('tipo')) {
			case 'excel':
				$dt_transmissao = str_replace("/", "_", $this->getRequest()->getParam('dt_transmissao'));
				$filename = "importacao_cotrijal_".$dt_transmissao.".txt";
				
				header('Content-type: text/plain');
				header('Content-Disposition: attachment; filename="'.$filename.'"');
				print($output);
	
				break;
			case 'html':
				print_r(nl2br($output));
				break;
		}
	}

	public function documentosdigitalizadosAction() 
	{
		$this->getHelper('ViewRenderer')->setNoRender();
    	$this->getHelper('layout')->disableLayout();
    
    	$DocumentoDigitalizado   = new Relatorio_Model_Corretor();
    	$RsDocumentoDigitalizado = $DocumentoDigitalizado->relatorioDocumentoDigitalizado($this->getRequest()->getParam('id_safra'), $this->getRequest()->getParam('id_produto'), $this->getRequest()->getParam('id_corretor'), '', false, $this->getRequest()->getParam('nr_caixa'));
    
    	$titles = array(
    			'id_safra' => 'Safra',
    			'id_proposta' => 'Proposta',
    			'nr_endosso' => 'Endosso',
    			'ds_status' => 'Status',
    			'id' => 'Proposta Endosso',
    			'ds_nome_proponente' => 'Segurado',
    			'ds_nome_cultura' => 'Cultura',
    			'ds_nome_fantasia' => 'Corretor',
    			'sublogin' => 'Sublogin',
    			'dt_transmissao' => 'Data de Transmissão',
    			'dt_transmissao_dif_hoje' => 'Nº de dias da Transmissão',
    			'ds_status_doc_digitalizado' => 'Situação Proposta',
    			'pendencias' => 'Pendência',
    			'ds_observacao' => 'Caixa',
                'dt_envio_digitalizado' => 'Prazo Final de Envio do Digital',
                'dt_ultima_alteracao' => 'Data Última Alteração'
    	);

    	$format = array(
				'dt_transmissao' => array('align' => 'center'),
				'dt_envio_digitalizado' => array('align' => 'center'),
				'dt_ultima_alteracao' => array('align' => 'center')
		);
    
    	switch ($this->getRequest()->getParam('tipo')) {
    		case 'excel':
    			$Csv = new Agro_Plugin_Rs2Csv();
    			$Csv->setRecordSet($RsDocumentoDigitalizado);
    			$Csv->setType("application/octet-stream");
    			$Csv->setFileName("relatorio_doc_fisico.csv");
    			$Csv->setDisposition("attachment");
    			$Csv->setTitles($titles);
    			$Csv->setSeparator(";");
    			$Csv->getCsv();
    
    			break;
    		case 'html':
    			$Html = new Agro_Plugin_Rs2Html();
    			$Html->setRecordSet($RsDocumentoDigitalizado);
    			$Html->setTitles($titles);
    			$Html->setFormat($format);
    			$Html->getHtml();
    
    			break;
    	}
	}

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

        $statusValidos = [
            Seguro_Model_Propostas::ID_STATUS_APOLICE_EMITIDA,
            Seguro_Model_Propostas::ID_STATUS_ENVIADA_AGUARDANDO_CONF,
            Seguro_Model_Propostas::ID_STATUS_CONF_PENDENCIAS,
            Seguro_Model_Propostas::ID_STATUS_AGUARDANDO_ENVIO_SEG,
        ];

        $Rs = (new Relatorio_Model_Tecnica())->relatorioVendas(
            $this->getRequest()->getParam('id_safra'),
            $this->getRequest()->getParam('id_produto'),
            $this->getRequest()->getParam('dt_inicio'),
            $this->getRequest()->getParam('dt_fim'),
            $statusValidos,
            true
        );

        $arr = [];

        foreach ($Rs as $Row) {
            $arr[$Row['id_proposta']]['id_proposta_mae'] = $Row['id_proposta_mae'];
            $arr[$Row['id_proposta']]['nr_apolice'] = $Row['nr_apolice'];
            $arr[$Row['id_proposta']]['ds_status'] = $Row['ds_status'];
            $arr[$Row['id_proposta']]['ds_nome_fantasia'] = $Row['ds_nome_fantasia'];
            $arr[$Row['id_proposta']]['ds_nome_preposto'] = $Row['ds_nome_preposto'];
            $arr[$Row['id_proposta']]['estado_propriedade'] = $Row['estado_propriedade'];
            $arr[$Row['id_proposta']]['municipio_propriedade'] = $Row['municipio_propriedade'];
            $arr[$Row['id_proposta']]['ds_nome_produto'] = $Row['ds_nome_produto'];
            $arr[$Row['id_proposta']]['ds_nome_cultura'] = $Row['ds_nome_cultura'];
            $arr[$Row['id_proposta']]['total_area'] = $Row['total_area'];
            $arr[$Row['id_proposta']]['total_lmga'] = $Row['total_lmga'];
            $arr[$Row['id_proposta']]['valor_total'] = $Row['valor_total'];
            $arr[$Row['id_proposta']]['valor_segurado'] = $Row['valor_segurado'];
            $arr[$Row['id_proposta']]['valor_subvencao_federal'] = $Row['valor_subvencao_federal'];
            $arr[$Row['id_proposta']]['valor_subvencao_estadual'] = $Row['valor_subvencao_estadual'];
        }

        $titles = array(
            'id_proposta_mae' => 'Proposta',
            'nr_apolice' => 'Apólice',
            'ds_status' => 'Status',
            'ds_nome_fantasia' => 'Corretor',
            'ds_nome_preposto' => 'Sublogin',
            'estado_propriedade' => 'UF',
            'municipio_propriedade' => 'Município',
            'ds_nome_produto' => 'Produto',
            'ds_nome_cultura' => 'Cultura',
            'total_area' => 'Área',
            'total_lmga' => 'LMGA',
            'valor_total' => 'Prêmio Líquido',
            'valor_segurado' => 'Prêmio Previsto Proponente',
            'valor_subvencao_federal' => 'Prêmio Previsto Subvenção Federal',
            'valor_subvencao_estadual' => 'Prêmio Previsto Subvenção Estadual',
        );

        $format = array(
            'id_proposta_mae' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $Csv = new Agro_Plugin_Rs2Csv();
                $Csv->setRecordSet($arr);
                $Csv->setType("application/octet-stream");
                $Csv->setFileName("relatorio_seguros_ativos.csv");
                $Csv->setDisposition("attachment");
                $Csv->setTitles($titles);
                $Csv->setSeparator(";");
                $Csv->getCsv();
                break;

            case 'html':
                $Html = new Agro_Plugin_Rs2Html();
                $Html->setRecordSet($arr);
                $Html->setTitles($titles);
                $Html->setFormat($format);
                $Html->getHtml();
                break;
        }
    }

    /**
     * Relatório Acompanhamento Devolução de Prêmio
     * Id: 2055
     * @return void
     */
	public function acompanhamentodevolucaopremioAction(): void
	{
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $relatorio = new Relatorio_Model_Corretor();

        $idCorretor = Sistema_Model_Usuarios::usuarioLogadoFuncionarioAgro()
            ? null
            : Zend_Auth::getInstance()->getIdentity()->id;

        $rs = $relatorio->relatorioAcompanhamentoDevolucaoPremio(
            (int)$this->getRequest()->getParam('id_safra'),
            0,
            $idCorretor,
            $this->getRequest()->getParam('id_status'),
            $this->getRequest()->getParam('id_produto')
        );

        foreach ($rs as &$registro) {
            $registro['observacao'] = Agro_Util::removerCaracteresQuebraRelatorios($registro['observacao']);
        }

        $titles = array(
            'id_proposta_mae' => 'Proposta',
            'nr_endosso' => 'Endosso',
            'ds_nome_proponente' => 'Segurado',
            'digitador' => 'Digitador',
            'dt_inicio' => 'Data de Início',
            'ds_status_devolucao' => 'Status da Devolução',
            'observacao' => 'Observação',
            'dt_programada' => 'Data Programada',
            'termo' => 'Termo',
            'documento_anexado' => 'Documento Anexado?',
            'valor' => 'Valor Previsto (R$)',
            'tp_devolucao' => 'Tipo de Devolução',
            'instituicao_financeira' => 'Instituição Financeira',
            'agencia' => 'Agência',
            'conta' => 'Conta',
            'conta_conjunta' => 'Conta Conjunta (S/N)',
            'tipo_conta' => 'Tipo de Conta'
        );

        $format = array(
            'termo' => array('align' => 'center'),
            'agencia' => array('align' => 'right'),
            'conta' => array('align' => 'right'),
            'conta_conjunta' => array('align' => 'center')
        );

        switch ($this->getRequest()->getParam('tipo')) {
            case 'excel':
                $csv = new Agro_Plugin_Rs2Csv();
                $csv->setRecordSet($rs);
                $csv->setType("application/octet-stream");
                $csv->setFileName("relatorio_doc_fisico.csv");
                $csv->setDisposition("attachment");
                $csv->setTitles($titles);
                $csv->setSeparator(";");
                $csv->getCsv();

                break;
            case 'html':
                $html = new Agro_Plugin_Rs2Html();
                $html->setRecordSet($rs);
                $html->setTitles($titles);
                $html->setFormat($format);
                $html->getHtml();

                break;
        }
    }
}
