package com.rjconsultores.ventaboletos.web.gui.controladores.impressaofiscal;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.FiscalRelgerencialEmpresa;
import com.rjconsultores.ventaboletos.service.FiscalImpressoraService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;

@Controller("editarRelgerencialEmpresaController")
@Scope("prototype")
public class EditarRelgerencialEmpresaController extends MyGenericForwardComposer  {

	public enum TipoRelatorioGerencial {
		RelatorioGeral,
		CupomEmbarque,
		CupomEmbGratuidade,
		IdentificacaoPafECF,
		ManifestoFiscal,
		ParametrosConfiguracao,
		IdentificacaoIdaVolta
		/*CUSTOM*/;
	}
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Autowired
	private FiscalImpressoraService fiscalImpressoraService;
	
	private FiscalRelgerencialEmpresa relgerencialEmpresa;
	private MyListbox relgerencialEmpresaList;
	
	private Combobox cmbEmpresa;
	private List<Empresa> lsEmpresas;
	
	private Combobox cmbTiporelgerencial;
	private List<String> lsTiporelgerencial = new ArrayList<String>();
	
	private Textbox txtIndice;
	private Textbox txtDescricao;

	private Button btnApagar;
	
	private static Logger log = Logger.getLogger(EditarRelgerencialEmpresaController.class);
	
	@Override
	public void doAfterCompose(Component comp) throws Exception {		

		for(TipoRelatorioGerencial tipo : TipoRelatorioGerencial.values()){
			lsTiporelgerencial.add(tipo.name());	
		}
				
		lsEmpresas = UsuarioLogado.getUsuarioLogado().getEmpresa();
		
		super.doAfterCompose(comp);
		
		relgerencialEmpresa = (FiscalRelgerencialEmpresa) Executions.getCurrent().getArg().get("relgerencialEmpresa");
		relgerencialEmpresaList = (MyListbox) Executions.getCurrent().getArg().get("relgerencialEmpresaList");
		
		if (relgerencialEmpresa.getFiscalrelgerencialId() == null)
			btnApagar.setVisible(Boolean.FALSE);
				
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		
		cmbEmpresa.getValue();
		cmbTiporelgerencial.getValue();
		
		try{
			
			Comboitem itemTiporelgerencial = cmbTiporelgerencial.getSelectedItem();
			if(itemTiporelgerencial != null){
				String tipoRelgerencial = (String) itemTiporelgerencial.getValue();
				relgerencialEmpresa.setTiporelgerencial(tipoRelgerencial);
			}
			
			relgerencialEmpresa.setDescricao(txtDescricao.getText());
			
			relgerencialEmpresa.setActivo(true);
			relgerencialEmpresa.setFecmodif(Calendar.getInstance().getTime());
			relgerencialEmpresa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
			if(relgerencialEmpresaList.getListData().contains(relgerencialEmpresa)){
				Messagebox.show(
						Labels.getLabel("editarRelgerencialEmpresaController.MSG.erroTipoRelgerencial"),
						Labels.getLabel("editarRelgerencialEmpresaController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
				return;
			}
			
			if(relgerencialEmpresa.getFiscalrelgerencialId() == null){
				fiscalImpressoraService.suscribirRelgerencialEmpresa(relgerencialEmpresa);
				relgerencialEmpresaList.addItemNovo(relgerencialEmpresa);
			} else {
				fiscalImpressoraService.actualizacionRelgerencialEmpresa(relgerencialEmpresa);
				relgerencialEmpresaList.updateItem(relgerencialEmpresa);
			}
						
			Messagebox.show(
					Labels.getLabel("editarRelgerencialEmpresaController.MSG.suscribirOK"),
					Labels.getLabel("editarRelgerencialEmpresaController.window.title"),
					Messagebox.OK, Messagebox.INFORMATION);

			closeWindow();
			
		}catch (Exception ex) {
			log.error("editarRelgerencialEmpresaController: " + ex);
			Messagebox.show(
					Labels.getLabel("MSG.Error"),
					Labels.getLabel("editarRelgerencialEmpresaController.window.title"),
					Messagebox.OK, Messagebox.ERROR);
		}
		
	}

	public void onClick$btnApagar(Event ev) {
        try {
            int resp = Messagebox.show(
                    Labels.getLabel("editarRelgerencialEmpresaController.MSG.borrarPergunta"),
                    Labels.getLabel("editarRelgerencialEmpresaController.window.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

            if (resp == Messagebox.YES) {

                	relgerencialEmpresa.setActivo(false);
            		relgerencialEmpresa.setFecmodif(Calendar.getInstance().getTime());
            		relgerencialEmpresa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            		fiscalImpressoraService.actualizacionRelgerencialEmpresa(relgerencialEmpresa);

                    Messagebox.show(
                            Labels.getLabel("editarRelgerencialEmpresaController.MSG.borrarOK"),
                            Labels.getLabel("editarRelgerencialEmpresaController.window.title"),
                            Messagebox.OK, Messagebox.INFORMATION);

                    relgerencialEmpresaList.removeItem(relgerencialEmpresa);

                    closeWindow();               
            }
        } catch (Exception ex) {
            log.error(ex);
        }
    }
	
	public FiscalRelgerencialEmpresa getRelgerencialEmpresa() {
		return relgerencialEmpresa;
	}

	public void setRelgerencialEmpresa(FiscalRelgerencialEmpresa relgerencialEmpresa) {
		this.relgerencialEmpresa = relgerencialEmpresa;
	}

	public MyListbox getRelgerencialEmpresaList() {
		return relgerencialEmpresaList;
	}

	public void setRelgerencialEmpresaList(MyListbox relgerencialEmpresaList) {
		this.relgerencialEmpresaList = relgerencialEmpresaList;
	}

	public Combobox getCmbEmpresa() {
		return cmbEmpresa;
	}

	public void setCmbEmpresa(Combobox cmbEmpresa) {
		this.cmbEmpresa = cmbEmpresa;
	}

	public List<Empresa> getLsEmpresas() {
		return lsEmpresas;
	}

	public void setLsEmpresas(List<Empresa> lsEmpresas) {
		this.lsEmpresas = lsEmpresas;
	}

	public Combobox getCmbTiporelgerencial() {
		return cmbTiporelgerencial;
	}

	public void setCmbTiporelgerencial(Combobox cmbTiporelgerencial) {
		this.cmbTiporelgerencial = cmbTiporelgerencial;
	}

	public List<String> getLsTiporelgerencial() {
		return lsTiporelgerencial;
	}

	public void setLsTiporelgerencial(List<String> lsTiporelgerencial) {
		this.lsTiporelgerencial = lsTiporelgerencial;
	}

	public Textbox getTxtIndice() {
		return txtIndice;
	}

	public void setTxtIndice(Textbox txtIndice) {
		this.txtIndice = txtIndice;
	}

	public Textbox getTxtDescricao() {
		return txtDescricao;
	}

	public void setTxtDescricao(Textbox txtDescricao) {
		this.txtDescricao = txtDescricao;
	}

	public Button getBtnApagar() {
		return btnApagar;
	}

	public void setBtnApagar(Button btnApagar) {
		this.btnApagar = btnApagar;
	}
	
	
}
