<?

class Sinistro2_AvisoiniciocolheitaController extends Agro_Controller_Action{

	public function init() {
		$this->view->title = 'Aviso Início de Colheita';
		$this->user = Zend_Auth::getInstance()->getIdentity();
	}

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

	public function indexAction() {
		$this->view->title .= " » Listagem";
		$this->view->formPesquisaProposta = new Sinistro2_Form_PesquisaProposta();
	}

	public function formAction() {
		$this->view->back = "/sinistro2/avisoiniciocolheita";
		$this->view->title .= " » Formulário";

		$this->view->processo = $this->getRequest()->getParam('processo');
		$this->view->proposta = $this->getRequest()->getParam('proposta');

		$User = Zend_Auth::getInstance()->getIdentity();

		$Model = $this->getModel();
		$this->view->itensSegurados = $Model->getItensSeguradosAvisosInicio($this->view->processo, $this->view->proposta);

		$this->view->listDadosItens = array();

		if ($this->getRequest()->isPost()) {
			$this->save($this->getRequest()->getParams());
		}
	}

	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();
				$Endossos = $ModelProposta->fetchRow($ModelProposta->getAdapter()->quoteInto('id = ?',$this->getRequest()->getParam('valor_pesquisa')));
				if ($Endossos) {
					$endosso = $Endossos->toArray();

					$filter['field'] = 'pe.id_endosso';
					$filter['operator'] = '=';
					$filter['value'] = $endosso['id_endosso'];
				} else {
					$filter['field'] = 'pe.id_endosso';
					$filter['operator'] = '=';
					$filter['value'] = $this->getRequest()->getParam('valor_pesquisa');
				}

				$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->user->tp_usuario == 'C') {
			$filter['field'] = 'pc.id_usuario';
			$filter['operator'] = '=';
			$filter['value'] = $this->user->id;

			$where[] = $filter;

		} else if ($this->user->tp_usuario == 'P') {
			$filter['field'] = 'p.id_usuario_criacao';
			$filter['operator'] = '=';
			$filter['value'] = $this->user->id;

			$where[] = $filter;
		}

/*		if ($this->user->tp_usuario == "C" || $this->user->tp_usuario == "P"){
			$filter['field'] = 'ds_chave_cultura';
			$filter['operator'] = '=';
			$filter['value'] = "CEBOLA";

			$where[] = $filter;
		}
*/

		if ($this->getRequest()->getParam('avisos_colheita')) {
			$filter['field'] = 'fl_novo';
			$filter['operator'] = '=';
			$filter['value'] = $this->getRequest()->getParam('avisos_colheita');

			$where[] = $filter;
		}

		return $where;
	}

	public function save(array $post) {

		$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
		$Db->beginTransaction();

		try {

			/****************************************************/
			// Tabela sinistro.avisos_inicio
			/***************************************************/
			$AvisoInicio = new Sinistro2_Model_AvisosInicio();

			$data = array();
			$data['id_proposta'] = $post['proposta'];
			$data['dt_inicio_colheita'] = Agro_Util::formatDate($post['dt_inicio_colheita'], 'yyyy-MM-dd');

			$idAvisoInicio = $AvisoInicio->insert($data);

			if ($post['itens_segurados']) {
				/****************************************************/
				// Tabela sinistro.avisos_inicio_itens_segurados
				/***************************************************/
				$AvisoItemSegurado = new Sinistro2_Model_AvisosInicioItensSegurados();

				foreach ($post['itens_segurados'] as $value) {
					$idItem = $value;

					$item = array();
					$item['id_aviso_inicio']    = $idAvisoInicio;
					$item['id_item_segurado']   = $idItem;

					$AvisoItemSegurado->insert($item);
				}
			}
			$Db->commit();

			$this->view->showMessage(MSG_SUCCESS, 'success');
			//$this->forward($this->_forwardSettings);
			//$this->_forward("sinistro", "avisoiniciocolheita", "form", array('proposta'=>$data['id_proposta']));
			$this->_redirect('sinistro2/avisoiniciocolheita/form/proposta/'.$data['id_proposta']);

		} catch (Exception $e) {
			$Db->rollback();
			$this->populaCampos($post);
			$this->view->showMessage($e->getMessage(), 'error');
		}
	}

	public function populaCampos($post) {

		$this->view->dt_colheita = $post['dt_colheita'];

		if ($post['itens_segurados']) {
			foreach ($post['itens_segurados'] as $item) {
				$idItem = $item;

				$this->view->listDadosItens[$idItem] = $idItem;
			}
		}
	}

	public function viewAction() {
		$this->getHelper('layout')->setLayout('popup');

		$idAvisoInicio = $this->getRequest()->getParam('id');
		$this->setAvisoAberto($idAvisoInicio);

		$isFuncionarioAgro = Sistema_Model_Usuarios::usuarioLogadoFuncionarioAgro();

		$modelAvisosInicio = new Sinistro2_Model_AvisosInicio();
		$this->view->data = $modelAvisosInicio->getDataViewAvisoInicio($idAvisoInicio, $isFuncionarioAgro);
	}

	private function setAvisoAberto($idAvisoInicio) {

		$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
		$Db->beginTransaction();
		try {
			$AvisoInicio = new Sinistro2_Model_AvisosInicio();
			$data = array(
					'fl_novo' => 'false'
			);
			$AvisoInicio->update($data, 'id = ' . $idAvisoInicio);

			$Db->commit();

			return true;
		} catch (Exception $e) {
			$Db->rollback();
			echo "Mensagem de erro: <br /><br />" . $e->getMessage();
			return false;
		}
	}

	public function excluirAction() {
		$this->isAjax();

		$params = $this->getRequest()->getParams();

		// Insere observação no processo com o motivo da exclusão
		$Model_ProcessosObservacoes = new Sinistro2_Model_ProcessosObservacoes();
		$Model_ProcessosObservacoes->insert(
			array(
				'id_processo'=>$params['id_processo'],
				'ds_observacao'=>'Aviso de início de colheita nº '.$params['id_aviso_inicio'].' excluído - Motivo: '.$params['ds_motivo_exclusao']
			)
		);

		$Model_AvisosInicio = new Sinistro2_Model_AvisosInicio();
		$Model_AvisosInicio->delete($params['id_aviso_inicio']);

		$Model_AvisosInicioItem = new Sinistro2_Model_AvisosInicioItensSegurados();
		$Model_AvisosInicioItem->delete($params['id_aviso_inicio']);

		//$this->_redirect('/sinistro2/processo/view/id/'.$params['id_processo'].'#avisos');
	}
}
