<?php

class Agro_Controller_Report extends Zend_Controller_Action {
	
	public function indexAction() {
		$Acoes = new Sistema_Model_Acoes();
		$RolesAcoes = new Sistema_Model_RolesAcao();
		$User = Zend_Auth::getInstance()->getIdentity();
		$this->view->user = $User;
		
		$relatorios = $Acoes->getRelatorios($this->getRequest()->getModuleName(), $this->getRequest()->getControllerName());
		foreach($relatorios as $relatorio){
			$resource = "{$relatorio['ds_module']}:{$relatorio['ds_controller']}:{$relatorio['ds_action']}";
				
			if (Agro_Util::checkPermission($resource)){
				$this->rel[] = $relatorio;
			}
		}

		$this->view->relatorios = $this->rel;
	}

	protected function generateReport(string $name, array $data, array $headers, array $format = []): void
	{
		switch ($this->getRequest()->getParam('tipo')) {
			case 'excel':
				$Csv = new Agro_Plugin_Rs2Csv();
				$Csv->setRecordSet($data);
				$Csv->setType("application/octet-stream");
				$Csv->setFileName($name);
				$Csv->setDisposition("attachment");
				$Csv->setTitles($headers);
				$Csv->setSeparator(";");
				$Csv->getCsv();
	
				break;
			case 'html':
				$Html = new Agro_Plugin_Rs2Html();
				$Html->setRecordSet($data);
				$Html->setTitles($headers);
				$Html->setFormat($format);
				$Html->getHtml();
				break;
		}
	}
	
	public function formAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$Render = strtolower($this->getRequest()->getParam('c'))."/filter_".strtolower($this->getRequest()->getParam('f')).".phtml";
		$Form = "Relatorio_Form_".ucfirst($this->getRequest()->getParam('f'));
		
		$user = Zend_Auth::getInstance()->getIdentity();
		$acaoModel = new Sistema_Model_Acoes;
		$relatorioSenha = $acaoModel->getRelatoriosUsuarioSenhaByUser($user->id, $this->getRequest()->getParam('module'), $this->getRequest()->getParam('c'), $this->getRequest()->getParam('a'));

		$htmlSenha = '';
		$relatorioSenha = $relatorioSenha->toArray();
		if (!empty($relatorioSenha)) {
			$relatorioSenha = current($relatorioSenha);
			$senha = $relatorioSenha['senha'];

			$htmlSenha .= <<<HTML
			<script type="text/javascript">
				$("form.formToReport div.geral").append('<div class="row"><div class="field"><label for="senha" class="required">Senha</label><input type="password" id="senha_report" name="senha_report" value="" maxlength="8" size="8" /></div></div>');

				$('#formToReport').submit(function(e) {
					
					if ($('#senha_report').val() != '$senha') {					
						e.preventDefault();
						alert('Senha do relatório inválida!');
					}
				});
			</script>
HTML;
		}

		$this->view->form = new $Form();
		$this->getResponse()->setBody($this->view->render($Render).$htmlSenha);
	}
}