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

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

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.Combobox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.ConfRestricaoVendaWeb;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.service.ConfRestricaoVendaWebService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderConfRestricaoVendaWeb;

@Controller("confRestricaoCanalVentaEmpValMinController")
@Scope("prototype")
public class ConfRestricaoCanalVentaEmpValMinController extends MyGenericForwardComposer {
	
	private static final long serialVersionUID = 1L;
	private List<Empresa> lsEmpresa;
	private Textbox txtValorMinimo;
	private Combobox cmbEmpresaVendaWeb;
	private Empresa empresa;
	private List<ConfRestricaoVendaWeb> lsConfRestricaoVendaWeb;
	private List<ConfRestricaoVendaWeb> lsConfRestricaoVendaWebTemp;
	private MyListbox confRestricaoVendaWebDataList;

	
	@Autowired
	private ConfRestricaoVendaWebService confRestricaoVendaWebService;
	
	@Override
	public void doAfterCompose(Component comp) throws Exception {
		
		lsEmpresa = UsuarioLogado.getUsuarioLogado().getEmpresa();
		super.doAfterCompose(comp);
		confRestricaoVendaWebDataList.setItemRenderer(new RenderConfRestricaoVendaWeb());
		
		lsConfRestricaoVendaWeb = confRestricaoVendaWebService.obtenerTodos();
		lsConfRestricaoVendaWebTemp = new ArrayList<>();
		lsConfRestricaoVendaWebTemp.addAll(lsConfRestricaoVendaWeb);
		confRestricaoVendaWebDataList.setData(lsConfRestricaoVendaWeb);
		
	}
	
	public void onClick$btnAddRestricaoVendaWeb(Event ev) throws InterruptedException {
		String valorMinimo = txtValorMinimo.getValue();
		if (valorMinimo != null && !valorMinimo.equals("")) {
			ConfRestricaoVendaWeb confRestricaoVendaWeb = new ConfRestricaoVendaWeb();
			confRestricaoVendaWeb.setActivo(Boolean.TRUE);
			confRestricaoVendaWeb.setFecmodif(Calendar.getInstance().getTime());
			confRestricaoVendaWeb.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
			confRestricaoVendaWeb.setValor(new Double(valorMinimo.replace(',', '.')));
			confRestricaoVendaWeb.setEmpresa(empresa);
			
			
			ConfRestricaoVendaWeb remover = new ConfRestricaoVendaWeb();
			for(ConfRestricaoVendaWeb c : lsConfRestricaoVendaWeb  ){
				if(c.getEmpresa().getNombempresa().equals(confRestricaoVendaWeb.getEmpresa().getNombempresa())){
					remover = c;
				}
			}
			if(remover.getEmpresa() != null){
				if(remover.getEmpresa().getEmpresaId()!= null){
					confRestricaoVendaWebService.borrar(remover);
				}
				lsConfRestricaoVendaWeb.remove(remover);
			}
			lsConfRestricaoVendaWeb.add(confRestricaoVendaWeb);
			lsConfRestricaoVendaWebTemp.add(confRestricaoVendaWeb);
			confRestricaoVendaWebDataList.setData(lsConfRestricaoVendaWeb);
		} else {
			Messagebox.show(
					Labels.getLabel("editarConfRestricaoCanalVentaController.MSG.informeValor"),
					Labels.getLabel("editarConfRestricaoCanalVentaController.window.title"),
					Messagebox.OK, Messagebox.INFORMATION);
		}
	}
	
	public void onClick$btnRemoveRestricaoVendaWeb(Event ev) throws InterruptedException {
		ConfRestricaoVendaWeb rVendaWeb = (ConfRestricaoVendaWeb) confRestricaoVendaWebDataList.getSelected();
		if (rVendaWeb != null) {
			//Para evitar erro na hora de excluir registros da lista de um registro copiado
			if(rVendaWeb.getConfRestricaoVendaWebId() != null) {
				lsConfRestricaoVendaWeb.remove(rVendaWeb);
				confRestricaoVendaWebService.borrar(rVendaWeb);
			}
			lsConfRestricaoVendaWeb.remove(rVendaWeb);
			confRestricaoVendaWebDataList.setData(lsConfRestricaoVendaWeb);
		} else {
			Messagebox.show(
					Labels.getLabel("editarConfRestricaoCanalVentaController.MSG.selecionarrestricaoVendaWeb"),
					Labels.getLabel("editarConfRestricaoCanalVentaController.window.title"),
					Messagebox.OK, Messagebox.INFORMATION);
		}
	}
	
	public void onClick$btnSalvar2(Event ev) throws InterruptedException {
		
		if(!lsConfRestricaoVendaWeb.isEmpty()){
			for(ConfRestricaoVendaWeb c :lsConfRestricaoVendaWebTemp){
				if(c.getConfRestricaoVendaWebId()== null){				
					confRestricaoVendaWebService.suscribir(c);
				}
			}
		}
		Messagebox.show(
				Labels.getLabel("editarConfRestricaoCanalVentaController.MSG.suscribirOK"),
				Labels.getLabel("editarConfRestricaoCanalVentaController.window.title"),
				Messagebox.OK, Messagebox.INFORMATION);
		closeWindow();
	}
		

	public List<Empresa> getLsEmpresa() {
		return lsEmpresa;
	}

	public void setLsEmpresa(List<Empresa> lsEmpresa) {
		this.lsEmpresa = lsEmpresa;
	}

	public Textbox getTxtValorMinimo() {
		return txtValorMinimo;
	}

	public void setTxtValorMinimo(Textbox txtValorMinimo) {
		this.txtValorMinimo = txtValorMinimo;
	}

	public Combobox getCmbEmpresaVendaWeb() {
		return cmbEmpresaVendaWeb;
	}

	public void setCmbEmpresaVendaWeb(Combobox cmbEmpresaVendaWeb) {
		this.cmbEmpresaVendaWeb = cmbEmpresaVendaWeb;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	
	private void gerarClones() {
		
		for (ConfRestricaoVendaWeb confRestricaoVendaWeb : lsConfRestricaoVendaWeb) {
			try {
				confRestricaoVendaWeb.clonar();
			} catch (CloneNotSupportedException e) {
				e.printStackTrace();
			}
		}
	}
}
