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

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
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.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.web.utilerias.MaskUtil;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxPuntoVenta;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;

@Scope("prototype")
@Controller("busquedaConferenciaComissaoController")
public class BusquedaConferenciaComissaoController extends MyGenericForwardComposer {
	
	private static Logger log = Logger.getLogger(BusquedaConferenciaComissaoController.class);

	private static final long serialVersionUID = 1L;
	// private static final Logger log = LoggerFactory.getLogger(BusquedaConferenciaComissaoController.class);

	@Autowired
	private EmpresaService empresaService;

	private Textbox txtCompetencia;
	private MyComboboxPuntoVenta cmbPuntoVenta;
	private PuntoVenta puntoVenta;
	private Empresa empresa;
	private List<Empresa> lsEmpresas;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		aplicarMascara();
		lsEmpresas = empresaService.obtenerTodos();
		txtCompetencia.focus();
	}

	public void onClick$btnPesquisa(Event ev) {
		txtCompetencia.getValue();
		try {
			
			if(verificarCampos()) {
				Map<String, Object> args = new HashMap<String, Object>();
				args.put("competencia", txtCompetencia.getValue());
				args.put("empresa", empresa);
				
				if(StringUtils.isNotBlank(cmbPuntoVenta.getValue())) {
					args.put("puntoVenta", puntoVenta);
				}
				
				openWindow("/gui/comissao/conferenciaComissao.zul",
						Labels.getLabel("conferenciaComissaoController.window.title"), args, MODAL);
			}
		
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
	}
	
	private boolean verificarCampos() throws Exception {
		if(!DateUtil.isCompetenciaValida(txtCompetencia.getValue())) {
			Messagebox.show(Labels.getLabel("MSG.Error.invalida.competencia"),
							Labels.getLabel("conferenciaComissaoController.window.title"),
							Messagebox.OK, Messagebox.ERROR);
			
			return false;
		}
		return true;
	}

	public void aplicarMascara() {
		MaskUtil.aplicarMascara(txtCompetencia.getUuid(), "99/9999");
	}

	public PuntoVenta getPuntoVenta() {
		return puntoVenta;
	}

	public void setPuntoVenta(PuntoVenta puntoVenta) {
		this.puntoVenta = puntoVenta;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

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

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

}
