<?php

class Produto_ProdutoCoberturaController extends Agro_Controller_Action {
	
	public function init() {
		$this->view->title = 'Produto » Configurações » Produto » Coberturas';
		$this->view->back = '/produto/produto';
		$this->_backAfterSave = false;
	}
	
	public function getModel() {
		return new Produto_Model_ProdutosCoberturas();
	}
	
	public function getForm() {
		return new Produto_Form_ProdutoCobertura();
	}
	
	public function formAction(){
		parent::formAction();

		$id = explode(",", $this->getRequest()->getParam("id"));
		$this->view->back = "/produto/produtocobertura/index/id/{$id[0]}";
		$this->view->id_produto = $id[0];
		$this->view->id_cobertura = $id[1];

		$ModelProdutosCoberturasEventos = new Produto_Model_ProdutosCoberturasEventos();

		if($this->getRequest()->isPost()){
		    $ModelProdutosCoberturasEventos->atualizaFlagExcluirAviso(array('id_produto' => $id[0], 'id_cobertura' => $id[1]));
		    
			foreach ($this->getRequest()->getParam('eventos') as $evento){
				$ModelProdutosCoberturasEventos->save($evento);
			}
		}

		if(count($id) > 1){

			$ModelEventos = new Produto_Model_CoberturasEventos();
			$eventos = $ModelEventos->getEventosByCobertura($id[1]);
	
			foreach ($eventos as $key => $evento){
				$values = $ModelProdutosCoberturasEventos->find($id[0], $id[1], $evento['id_evento'])->current();
				
				$eventos[$key] = array('id_evento' => $evento['id_evento'], 
										'ds_nome_evento' => $evento['ds_nome_evento'], 
										'nr_dias_carencia' => $values['nr_dias_carencia'], 
										'nr_dias_alerta_aviso' => $values['nr_dias_alerta_aviso'],
				                        'nr_dias_cancelamento' => $values['nr_dias_cancelamento'],
				     					'fl_excluir_aviso_sinistro' => $values['fl_excluir_aviso_sinistro']);
			}
	
			$this->view->eventos = $eventos;
		}
		
	}
	
	public function indexAction() {
		parent::indexAction();
		$this->view->id_produto = $this->getRequest()->getParam('id');
	}
	
	public function getFilter() {
		$where[] = array(
			'field' => 'pc.id_produto',
			'operator' => '=',
			'value' => $this->getRequest()->getParam('id_produto')
		);
		
		return $where;
	}
	
	public function editAction () {
		$session = new Zend_Session_Namespace('produto');
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Json = new Zend_Json();

		$ProdutosCoberturas = $this->getModel();

		$Row = $ProdutosCoberturas->find($session->id, $this->getRequest()->getParam('id'))->current()->toArray();
		
		$this->getResponse()->setBody($Json->encode($Row));
	}
	
	
	public function deleteAction () {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$result = array();
		
		$ProdutosCoberturas = $this->getModel();
		
		$row = $ProdutosCoberturas->find($this->getRequest()->getParam('id_produto'), $this->getRequest()->getParam('id_cobertura'))->current();
		
		if ($row->fl_cobertura_principal) {
			
			$result['message'] = 'Não é possível deletar uma cobertura principal';
			$result['status'] = false;
				
		} else {
			if ($ProdutosCoberturas->remove($this->getRequest()->getParam('id_produto'), $this->getRequest()->getParam('id_cobertura'))){
				$result['message'] = 'Ação realizada com sucesso';
				$result['status'] = true;
				
			} else {
				$result['message'] = 'Não foi possível excluir o registro';
				$result['status'] = false;
				
			};
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}
	
	public function save() {
		$ProdutosCoberturas = new Produto_Model_ProdutosCoberturas();

		if ($ProdutosCoberturas->save($this->getRequest()->getParams())) {
			
			$this->view->showMessage(MSG_SUCCESS, 'success');
		} else {
			$this->view->showMessage(MSG_ERROR, 'error');
		}
	}
	
	public function setprodutoAction() {
		$session = new Zend_Session_Namespace('produto');
		$session->id = $this->getRequest()->getParam('id');
		$this->_redirect('/produto/produtocobertura');
	}
	
	public function loadAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = $this->getModel();
		
		$Row = $Model->find($this->getRequest()->getParam('id_produto'), $this->getRequest()->getParam('id_cobertura'))->current();
		
		$this->getResponse()->setBody(Zend_Json::encode($Row->toArray()));

	}

	public function listAction() {
		$this->getHelper('layout')->disableLayout();
		$where = $this->getFilter();
		$Model = new Produto_Model_ProdutosCoberturas();
		
		try {
			if ($this->getRequest()->getParam("o")) {
				$Model->_order = trim($this->getRequest()->getParam("o") .' '. $this->getRequest()->getParam("s"));
			}

			$recordsPerPage = ($this->recordsPerPage ? $this->recordsPerPage :  RECORDS_PER_PAGE);
			$Rs = $Model->fetchAllPaginator($where, $this->getRequest()->getParam('page'), $recordsPerPage, $this->_paginator);
			
			if ($this->_columnList) {
				$this->getHelper('ViewRenderer')->setNoRender();
				
				$List = new Agro_List_Table($this->_columnList, $Rs, $this->_paginator, $this->getRequest());
				$this->getResponse()->setBody($List->toString());
			} else {
				$this->view->paginator = $Rs;
			}
		} catch (Exception $e) {
			$this->view->error = $e;
		}
	}	
	
	public function activeAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = $this->getModel();
		$result = array('status' => false);

		if ($this->getRequest()->getParam('id_produto') && $this->getRequest()->getParam('id_cobertura')) {
			$Row = $Model->find($this->getRequest()->getParam('id_produto'),$this->getRequest()->getParam('id_cobertura'))->current();
			if ($Row->fl_ativo) {
				$Row->fl_ativo = 0;
			} else {
				$Row->fl_ativo = 1;
			}
			if ($Row->save()) {
				$result['status'] = true;
			}
			$result['ativo'] = $Row->fl_ativo;
			$this->getResponse()->setBody(Zend_Json::encode($result));
		}
	}	

}