/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.web.gui.controladores;

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

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.Caption;
import org.zkoss.zul.Menubar;
import org.zkoss.zul.Toolbarbutton;

import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.service.UsuarioService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.menu.MenuFactory;
import com.rjconsultores.ventaboletos.web.utilerias.menu.MenuFactoryPropertiesImpl;

/**
 * 
 * @author Administrador
 */
@Controller("indexController")
@Scope("prototype")
public class IndexController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	@Autowired
	private UsuarioService usuarioService;
	@Autowired
	private ConstanteService constanteService;
	private Usuario usuario;
	private Toolbarbutton toolBar;
	private Toolbarbutton toolBarUser;
	private Menubar menubar;
	private Caption lblNombreAplicacion;

	public Toolbarbutton getToolBar() {
		return toolBar;
	}

	public void setToolBar(Toolbarbutton toolBar) {
		this.toolBar = toolBar;
	}

	public Toolbarbutton getToolBarUser() {
		return toolBarUser;
	}

	public void setToolBarUser(Toolbarbutton toolBarUser) {
		this.toolBarUser = toolBarUser;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	private void cargarNombreAmbiente() {
		String strNombre = lblNombreAplicacion.getLabel();
		strNombre = strNombre + " - " + constanteService.buscarNombreAmbiente();
		lblNombreAplicacion.setLabel(strNombre);
	}

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		cargarNombreAmbiente();

		usuario = UsuarioLogado.getUsuarioLogado();

		if (usuario == null) {
			toolBarUser.setVisible(Boolean.FALSE);

			openWindow("/login.zul", Labels.getLabel("winLogin.title"), arg, MODAL, Boolean.FALSE);
		} else {
			usuario = usuarioService.obtenerID(usuario.getUsuarioId());

			toolBarUser.setVisible(Boolean.TRUE);
			toolBarUser.setLabel(usuario.getNombusuario());

			if (usuario.getUsuarioPerfilList().isEmpty()) {
				return;
			}
			MenuFactory menuFactory = new MenuFactoryPropertiesImpl(desktop, usuario.getUsuarioPerfilList());
			menuFactory.construirMenu(menubar);

		}
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void onClick$toolBarUser(Event ev) {
		Map args = new HashMap();
		args.put("usuario", usuario);
		args.put("usuarioList", null);
		args.put("usrAdmin", Boolean.FALSE);

		openWindow("/gui/seguridad/editarUsuario.zul", Labels.getLabel("editarUsuarioController.window.title"), args, MODAL);
	}
}
