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

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

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
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.zk.ui.util.Clients;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Tab;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.Empleado;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Perfil;
import com.rjconsultores.ventaboletos.entidad.PerfilFuncion;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.entidad.UsuarioEmpresa;
import com.rjconsultores.ventaboletos.entidad.UsuarioPerfil;
import com.rjconsultores.ventaboletos.entidad.UsuarioSesion;
import com.rjconsultores.ventaboletos.entidad.UsuarioUbicacion;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.EmpleadoService;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.PerfilService;
import com.rjconsultores.ventaboletos.service.PuntoVentaService;
import com.rjconsultores.ventaboletos.service.UsuarioEmpresaService;
import com.rjconsultores.ventaboletos.service.UsuarioPerfilService;
import com.rjconsultores.ventaboletos.service.UsuarioService;
import com.rjconsultores.ventaboletos.service.UsuarioSesionService;
import com.rjconsultores.ventaboletos.service.UsuarioUbicacionService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.segurida.PerfilJerarquia;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderUbicacion;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderUsuarioEmpresa;

/**
 * 
 * @author rodrigo
 */
@Controller("editarUsuarioController")
@Scope("prototype")
public class EditarUsuarioController extends MyGenericForwardComposer {

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

	private static final String CONTRASENA_VACIA = "**********";
	@Autowired
	private UsuarioService usuarioService;
	@Autowired
	private PerfilService perfilService;
	@Autowired
	private UsuarioPerfilService usuarioPerfilService;
	@Autowired
	private UsuarioUbicacionService usuarioUbicacionService;
	@Autowired
	private UsuarioEmpresaService usuarioEmpresaService;
	@Autowired
	private EmpleadoService empleadoService;
	@Autowired
	private EmpresaService empresaService;
	@Autowired
	private PuntoVentaService puntoVentaService;
	@Autowired
	private UsuarioSesionService usuarioSesionService;
	private List<Perfil> lsPerfil;
	private List<Empresa> lsEmpresa;
	private List<PuntoVenta> lsPuntoVenta = null;
	private Perfil perfilSeleccionada;
	private List<UsuarioUbicacion> lsUsuarioUbicacion;
	private List<UsuarioEmpresa> lsUsuarioEmpresa;
	private Combobox cmbParada;
	private Combobox cmbPuntoVenta;
	private Combobox cmbPerfil;
	private Combobox cmbEmpresa;
	private Usuario usuario;
	private MyListbox usuarioList;
	private MyListbox ubicacionList;
	private MyListbox empresaList;
	private Textbox txtCveEmpleado;
	private Textbox txtNombUsuario;
	private Textbox txtSenha;
	private Textbox txtConfirmSenha;
	private Textbox txtCveUsuario;
	private Textbox txtNombPaterno;
	private Textbox txtNombMaterno;
	private Button btnAdicionarUbicacion;
	private Button btnRemoverUbicacion;
	private Button btnApagar;
	private Button btnPesquisa;
	private Boolean usrAdmin;
	private Tab tabUsuario;
	private Tab tabUbicacion;
	private Checkbox chkCorteTurnoAutomatico;
	private Button btnRemoverEmpresa;
	private Button btnAdicionarEmpresa;
	private Radio radioSim;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		
		Usuario usuarioLogado = usuarioService.obtenerID(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		Perfil perfilUsuario = usuarioLogado.getUsuarioPerfilList().get(0).getPerfil();

		lsPerfil = perfilService.buscaPerfilJerarquia(perfilUsuario);
		lsEmpresa = empresaService.obtenerTodos();

		super.doAfterCompose(comp);

		Usuario usuarioS = (Usuario) Executions.getCurrent().getArg().get("usuario");
		usuario = (usuarioS.getUsuarioId() == null) ? usuarioS : usuarioService.obtenerID(usuarioS.getUsuarioId());
		usuarioList = (MyListbox) Executions.getCurrent().getArg().get("usuarioList");
		usrAdmin = (Boolean) Executions.getCurrent().getArg().get("usrAdmin");

		lsUsuarioUbicacion = new ArrayList<UsuarioUbicacion>();
		if (usuario.getUsuarioId() != null) {
			lsUsuarioUbicacion.addAll(usuarioUbicacionService.buscarPorUsuario(usuario));
		}

		enableAddUbicacion();

		ubicacionList.setItemRenderer(new RenderUbicacion());
		ubicacionList.setData(lsUsuarioUbicacion);

		lsUsuarioEmpresa = new ArrayList<UsuarioEmpresa>();
		if (usuario.getUsuarioId() != null) {
			lsUsuarioEmpresa.addAll(usuarioEmpresaService.obtenerPorUsuario(usuario));
		}

		empresaList.setItemRenderer(new RenderUsuarioEmpresa());
		empresaList.setData(lsUsuarioEmpresa);

		txtCveEmpleado.focus();

		if (usuario.getUsuarioId() == null) {
			btnApagar.setVisible(Boolean.FALSE);
			usuario.setIndCorteAutomatico(true);
		} else {
			txtCveUsuario.setDisabled(Boolean.TRUE);
			if (usuario.getEmpleado() != null) {
				usuario = usuarioService.obtenerID(usuario.getUsuarioId());
				cmbPerfil.focus();
				txtCveEmpleado.setText(usuario.getEmpleado().getCveEmpleado());
				txtCveEmpleado.setDisabled(true);
				txtNombUsuario.setDisabled(true);
				txtNombPaterno.setDisabled(true);
				txtNombMaterno.setDisabled(true);
				btnPesquisa.setVisible(false);

			}
			List<UsuarioPerfil> lsUsuarioPerfil = usuarioPerfilService.obtenerPorUsuario(usuario);
			if (!lsUsuarioPerfil.isEmpty()) {
				perfilSeleccionada = lsUsuarioPerfil.get(0).getPerfil();
			}

			txtSenha.setText(CONTRASENA_VACIA);
			txtConfirmSenha.setText(CONTRASENA_VACIA);
		}

		validaUsuarioAdmin(perfilUsuario);

	}

	private void validaUsuarioAdmin(Perfil perfilUsuario) {
		chkCorteTurnoAutomatico.setDisabled(!validaHabilitarViradaCaixaAutomatico());
		
		if (usrAdmin) {
			PerfilJerarquia usuarioJerarquia = perfilUsuario.getIndJerarquia() == null ? PerfilJerarquia.NORMAL : PerfilJerarquia.buscar(perfilUsuario.getIndJerarquia());
			PerfilJerarquia selecionadoJerarquia = perfilSeleccionada == null ? PerfilJerarquia.NORMAL : (perfilSeleccionada.getIndJerarquia() == null ? PerfilJerarquia.NORMAL : PerfilJerarquia.buscar(perfilSeleccionada.getIndJerarquia()));

			if (!usuarioJerarquia.equals(PerfilJerarquia.ADMIN)) {
				if (!usuarioJerarquia.equals(selecionadoJerarquia)) {

					if (selecionadoJerarquia.equals(PerfilJerarquia.NORMAL)) {
						if (selecionadoJerarquia.getValor() > usuarioJerarquia.getValor())
							desabilitarAdmin();
					} else {
						if (selecionadoJerarquia.getValor() < usuarioJerarquia.getValor())
							desabilitarAdmin();
					}
				}
			}
		} else {
			desabilitarAdmin();
		}
	}
	
	public boolean validaHabilitarViradaCaixaAutomatico() {
		List<String> listClavesPermisos = new ArrayList<String>();

		Usuario usuarioLogado = usuarioService.obtenerID(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		List<UsuarioPerfil> listUsuarioPerfil = usuarioLogado.getUsuarioPerfilList();
		for (UsuarioPerfil up : listUsuarioPerfil) {
			List<PerfilFuncion> listPerfilFuncion = up.getPerfil().getPerfilFuncionList();
			for (PerfilFuncion pf : listPerfilFuncion) {
				listClavesPermisos.add(pf.getFuncionSistema().getDescruta());
			}
		}
		if (listClavesPermisos.contains("HABILATAR_FECHAMENTO_AUTOMATICO_CAIXA_USUARIO")) {
			return true;
		}
		return false;
	}
	
	public void desabilitarAdmin() {

		usrAdmin = Boolean.FALSE;

		cmbPerfil.setDisabled(Boolean.TRUE);
		txtCveUsuario.setDisabled(Boolean.TRUE);
		btnApagar.setVisible(Boolean.FALSE);

		btnAdicionarUbicacion.setVisible(Boolean.FALSE);
		btnRemoverUbicacion.setVisible(Boolean.FALSE);
		btnAdicionarEmpresa.setVisible(Boolean.FALSE);
		btnRemoverEmpresa.setVisible(Boolean.FALSE);
		cmbParada.setDisabled(Boolean.TRUE);
		cmbPuntoVenta.setDisabled(Boolean.TRUE);
		
		chkCorteTurnoAutomatico.setDisabled(Boolean.TRUE);

	}

	private void enableAddUbicacion() {
		if (lsUsuarioUbicacion.size() > 0) {
			btnAdicionarUbicacion.setDisabled(true);
		} else {
			btnAdicionarUbicacion.setDisabled(false);
		}
	}

	public void onFocus$txtSenha(Event ev) {
		if (txtSenha.getValue().equals(CONTRASENA_VACIA)) {
			txtSenha.setConstraint("");
			txtSenha.setText("");
			txtSenha.setConstraint("no empty");

			txtConfirmSenha.setConstraint("");
			txtConfirmSenha.setText("");
			txtConfirmSenha.setConstraint("no empty");
		}

	}

	public void onFocus$txtConfirmSenha(Event ev) {
		if (txtConfirmSenha.getValue().equals(CONTRASENA_VACIA)) {
			txtSenha.setConstraint("");
			txtSenha.setText("");
			txtSenha.setConstraint("no empty");

			txtConfirmSenha.setConstraint("");
			txtConfirmSenha.setText("");
			txtConfirmSenha.setConstraint("no empty");
		}
	}
	
	public void onClick$btnCopiar(Event ev) {
		usuario.setUsuarioId(null);
		usuario.setNombmaterno("");
		usuario.setNombpaterno("");
		usuario.setNombusuario("");
		txtCveUsuario.setConstraint("");
		txtNombUsuario.setConstraint("");
		txtCveUsuario.setDisabled(false);
		txtCveUsuario.setText("");
		txtNombMaterno.setText("");
		txtNombPaterno.setText("");
		txtNombUsuario.setText("");
		txtSenha.setText("");
		txtConfirmSenha.setText("");
		txtCveUsuario.setConstraint("no empty");
		txtNombUsuario.setConstraint("no empty");
		
		usuario.updateUsuarioEmpresaForClonedUser();
		usuario.updateUsuarioPerfilForClonedUser();
		usuario.updateUsuarioUbicacionForClonedUser();
	}
	
	public void onClick$btnPesquisa(Event ev) {
		txtCveEmpleado.setConstraint("no empty");
		txtCveEmpleado.getValue();
		txtCveEmpleado.setConstraint("");
		try {

			txtNombUsuario.setConstraint("");
			txtNombPaterno.setConstraint("");
			txtNombMaterno.setConstraint("");

			txtNombUsuario.setValue("");
			txtNombPaterno.setValue("");
			txtNombMaterno.setValue("");

			txtNombUsuario.setConstraint("no empty");
			txtNombPaterno.setConstraint("no empty");
			txtNombMaterno.setConstraint("no empty");

			List<Empleado> emp = empleadoService.pesquisaClave(txtCveEmpleado.getValue());
			txtCveUsuario.focus();

			if (emp.isEmpty()) {
				txtNombUsuario.setDisabled(false);
				txtNombPaterno.setDisabled(false);
				txtNombMaterno.setDisabled(false);

				Messagebox.show(
						Labels.getLabel("MSG.ningunRegistro"),
						Labels.getLabel("editarUsuarioController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
			} else {

				List<Usuario> listUsuario = usuarioService.buscarPorEmpleado(emp.get(0));

				if (listUsuario.isEmpty()) {

					txtNombUsuario.setDisabled(true);
					txtNombPaterno.setDisabled(true);
					txtNombMaterno.setDisabled(true);

					txtNombUsuario.setValue(emp.get(0).getNombEmpleado());
					txtNombPaterno.setValue(emp.get(0).getNombPaterno());
					txtNombMaterno.setValue(emp.get(0).getNombMaterno());

					usuario.setNombusuario(emp.get(0).getNombEmpleado());
					usuario.setNombpaterno(emp.get(0).getNombPaterno());
					usuario.setNombmaterno(emp.get(0).getNombMaterno());

					usuario.setEmpleado(emp.get(0));

				} else {
					txtNombUsuario.setDisabled(false);
					txtNombPaterno.setDisabled(false);
					txtNombMaterno.setDisabled(false);
					Messagebox.show(
							Labels.getLabel("editarUsuarioController.MSG.existeEmpleado", new Object[] { txtCveEmpleado.getValue() }),
							Labels.getLabel("editarUsuarioController.window.title"),
							Messagebox.OK, Messagebox.EXCLAMATION);
				}
			}

		} catch (Exception ex) {
			log.error(ex);
		}
	}

	public void onClick$btnRemoverEmpresa(Event ev) {
		UsuarioEmpresa ue = (UsuarioEmpresa) empresaList.getSelected();
		if (ue != null) {

			ue.setActivo(Boolean.FALSE);
			ue.setFecmodif(Calendar.getInstance().getTime());
			ue.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

			lsUsuarioEmpresa.remove(ue);
			empresaList.setData(lsUsuarioEmpresa);

			if (ue.getUsuarioEmpresaId() != null) {
				usuarioEmpresaService.borrar(ue);
			}
		}

	}

	public void onClick$btnAdicionarEmpresa(Event ev) throws InterruptedException {
		if (cmbEmpresa.getSelectedItem() == null) {
			return;
		}

		final Empresa empresa = (Empresa) cmbEmpresa.getSelectedItem().getValue();
		if (empresa != null) {

			boolean existeEmpresa = CollectionUtils.exists(lsUsuarioEmpresa, new Predicate() {

				@Override
				public boolean evaluate(Object object) {
					return ((UsuarioEmpresa) object).getEmpresa().equals(empresa);
				}
			});

			if (existeEmpresa) {
				Messagebox.show(
						Labels.getLabel("MSG.Registro.Existe"),
						Labels.getLabel("editarUsuarioController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);

				return;
			} else {

				UsuarioEmpresa ue = new UsuarioEmpresa();
				ue.setActivo(Boolean.TRUE);
				ue.setFecmodif(Calendar.getInstance().getTime());
				ue.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
				ue.setUsuarioLog(usuario);
				ue.setEmpresa(empresa);
				ue.setIndValidaPreimpreso(radioSim.isChecked());

				lsUsuarioEmpresa.add(ue);
				empresaList.setData(lsUsuarioEmpresa);

			}
		}
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		boolean hayCambioContrasena = false;
		txtSenha.setConstraint("no empty");
		txtConfirmSenha.setConstraint("no empty");

		tabUsuario.setSelected(Boolean.TRUE);

		txtNombUsuario.getText();
		txtCveUsuario.getText();
		txtNombPaterno.getText();
		txtNombMaterno.getText();
		txtSenha.getText();
		txtConfirmSenha.getText();

		cmbPerfil.getValue();
		cmbEmpresa.getValue();

		String senha = "";
		String confirmSenha = "";

		if (!txtSenha.getValue().equals(CONTRASENA_VACIA)) {
			senha = txtSenha.getText();
			confirmSenha = txtConfirmSenha.getText();

			hayCambioContrasena = true;
		}

		try {
			if (!senha.equals(confirmSenha)) {
				Messagebox.show(
						Labels.getLabel("editarUsuarioController.MSG.configmSenha"),
						Labels.getLabel("editarUsuarioController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);

				return;
			}

			if (lsUsuarioUbicacion.isEmpty()) {
				tabUbicacion.setSelected(Boolean.TRUE);
				Messagebox.show(
						Labels.getLabel("editarUsuarioController.MSG.necessitaUbicacion"),
						Labels.getLabel("editarUsuarioController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);

				return;
			}

			Perfil perfil = (Perfil) cmbPerfil.getSelectedItem().getValue();
			usuario.setUsuarioEmpresaList(lsUsuarioEmpresa);
			usuario.setUsuarioUbicacionList(lsUsuarioUbicacion);
			senha = hayCambioContrasena ? senha : null;
			usuarioService.suscribirActualizar(usuario, senha, perfil);

			if (usrAdmin) {
				usuarioList.updateItem(usuario);
			}

			Messagebox.show(
					Labels.getLabel("editarUsuarioController.MSG.suscribirOK"),
					Labels.getLabel("editarUsuarioController.window.title"),
					Messagebox.OK, Messagebox.INFORMATION);

			closeWindow();

		} catch (BusinessException ex) {
			log.info(ex.getLocalizedMessage());
			Clients.alert(
					ex.getLocalizedMessage(),
					Labels.getLabel("editarUsuarioController.window.title"), Messagebox.INFORMATION);
		}
	}

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

			if (resp == Messagebox.YES) {
				usuarioService.borrar(usuario);

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

				if (usrAdmin) {
					usuarioList.removeItem(usuario);
				}

				closeWindow();
			}
		} catch (Exception ex) {
			log.error(ex);
		}
	}

	public void onChange$cmbParada() {
		Comboitem cbiParada = cmbParada.getSelectedItem();

		if (cbiParada != null) {
			lsPuntoVenta = puntoVentaService.buscaPuntoVentaParada((Parada) cmbParada.getSelectedItem().getValue());
			cmbPuntoVenta.setModel(new ListModelList(lsPuntoVenta));
			if (lsPuntoVenta.isEmpty()) {
				cmbPuntoVenta.setText((String) null);
			}
		} else {
			cmbPuntoVenta.setModel(new ListModelList(Collections.emptyList()));
			cmbPuntoVenta.setText((String) null);
		}
	}

	public void onClick$btnAdicionarUbicacion() {
		Comboitem cbiParada = cmbParada.getSelectedItem();
		Comboitem cbiPuntoVenta = cmbPuntoVenta.getSelectedItem();

		if ((cbiParada != null) && (cbiPuntoVenta != null)) {
			Parada parada = (Parada) cbiParada.getValue();
			PuntoVenta puntoVenta = (PuntoVenta) cbiPuntoVenta.getValue();

			UsuarioUbicacion uu = new UsuarioUbicacion();
			uu.setActivo(Boolean.TRUE);
			uu.setFecmodif(Calendar.getInstance().getTime());
			uu.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
			uu.setParada(parada);
			uu.setPuntoVenta(puntoVenta);
			uu.setUsuario(usuario);

			lsUsuarioUbicacion.add(uu);
			ubicacionList.setData(lsUsuarioUbicacion);

			enableAddUbicacion();
		}
	}

	public void onClick$btnRemoverUbicacion(Event ev) {
		UsuarioUbicacion uu = (UsuarioUbicacion) ubicacionList.getSelected();
		if (uu != null) {
			uu.setActivo(Boolean.FALSE);
			uu.setFecmodif(Calendar.getInstance().getTime());
			uu.setUsuariomodifId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

			lsUsuarioUbicacion.remove(uu);
			ubicacionList.setData(lsUsuarioUbicacion);

			if (uu.getUsuarioubicacionId() != null) {
				usuarioUbicacionService.borrar(uu);
			}
		}

		enableAddUbicacion();
	}

	public void onClick$btnFinalizarSesion(Event ev) {
		try {
			List<UsuarioSesion> usuarioSesion = usuarioSesionService.buscar(usuario);

			for (UsuarioSesion u : usuarioSesion) {
				u.setIndFirmado(Boolean.FALSE);
				usuarioSesionService.actualizacion(u);
			}

			Messagebox.show(Labels.getLabel("busquedaUsuarioSesionController.MSG.ok"),
					Labels.getLabel("busquedaUsuarioSesionController.window.title"), Messagebox.OK, Messagebox.INFORMATION);

		} catch (Exception e) {
			try {
				Messagebox.show(Labels.getLabel("MSG.Error"), Labels.getLabel("busquedaUsuarioSesionController.window.title"),
						Messagebox.OK, Messagebox.ERROR);
			} catch (InterruptedException e1) {
			}
		}
	}

	public MyListbox getUbicacionList() {
		return ubicacionList;
	}

	public void setUbicacionList(MyListbox ubicacionList) {
		this.ubicacionList = ubicacionList;
	}

	public List<UsuarioEmpresa> getLsUsuarioEmpresa() {
		return lsUsuarioEmpresa;
	}

	public void setLsUsuarioEmpresa(List<UsuarioEmpresa> lsUsuarioEmpresa) {
		this.lsUsuarioEmpresa = lsUsuarioEmpresa;
	}

	public MyListbox getEmpresaList() {
		return empresaList;
	}

	public void setEmpresaList(MyListbox empresaList) {
		this.empresaList = empresaList;
	}

	public Combobox getCmbParada() {
		return cmbParada;
	}

	public void setCmbParada(Combobox cmbParada) {
		this.cmbParada = cmbParada;
	}

	public Combobox getCmbPuntoVenta() {
		return cmbPuntoVenta;
	}

	public void setCmbPuntoVenta(Combobox cmbPuntoVenta) {
		this.cmbPuntoVenta = cmbPuntoVenta;
	}

	public Textbox getTxtConfirmSenha() {
		return txtConfirmSenha;
	}

	public void setTxtConfirmSenha(Textbox txtConfirmSenha) {
		this.txtConfirmSenha = txtConfirmSenha;
	}

	public Textbox getTxtSenha() {
		return txtSenha;
	}

	public void setTxtSenha(Textbox txtSenha) {
		this.txtSenha = txtSenha;
	}

	public List<Perfil> getLsPerfil() {
		return lsPerfil;
	}

	public void setLsPerfil(List<Perfil> lsPerfil) {
		this.lsPerfil = lsPerfil;
	}

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

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

	public Textbox getTxtNombUsuario() {
		return txtNombUsuario;
	}

	public void setTxtNombUsuario(Textbox txtNombUsuario) {
		this.txtNombUsuario = txtNombUsuario;
	}

	public Usuario getUsuario() {
		return usuario;
	}

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

	public Button getBtnAdicionarUbicacion() {
		return btnAdicionarUbicacion;
	}

	public void setBtnAdicionarUbicacion(Button btnAdicionarUbicacion) {
		this.btnAdicionarUbicacion = btnAdicionarUbicacion;
	}

	public Button getBtnApagar() {
		return btnApagar;
	}

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

	public Combobox getCmbPerfil() {
		return cmbPerfil;
	}

	public void setCmbPerfil(Combobox cmbPerfil) {
		this.cmbPerfil = cmbPerfil;
	}

	public Combobox getCmbEmpresa() {
		return cmbEmpresa;
	}

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

	public List<UsuarioUbicacion> getLsUsuarioUbicacion() {
		return lsUsuarioUbicacion;
	}

	public void setLsUsuarioUbicacion(List<UsuarioUbicacion> lsUsuarioUbicacion) {
		this.lsUsuarioUbicacion = lsUsuarioUbicacion;
	}

	public Textbox getTxtCveUsuario() {
		return txtCveUsuario;
	}

	public void setTxtCveUsuario(Textbox txtCveUsuario) {
		this.txtCveUsuario = txtCveUsuario;
	}

	public Button getBtnRemoverUbicacion() {
		return btnRemoverUbicacion;
	}

	public UsuarioEmpresaService getUsuarioEmpresaService() {
		return usuarioEmpresaService;
	}

	public void setUsuarioEmpresaService(UsuarioEmpresaService usuarioEmpresaService) {
		this.usuarioEmpresaService = usuarioEmpresaService;
	}

	public void setBtnRemoverUbicacion(Button btnRemoverUbicacion) {
		this.btnRemoverUbicacion = btnRemoverUbicacion;
	}

	public PerfilService getPerfilService() {
		return perfilService;
	}

	public void setPerfilService(PerfilService perfilService) {
		this.perfilService = perfilService;
	}

	public Textbox getTxtNombMaterno() {
		return txtNombMaterno;
	}

	public void setTxtNombMaterno(Textbox txtNombMaterno) {
		this.txtNombMaterno = txtNombMaterno;
	}

	public Textbox getTxtNombPaterno() {
		return txtNombPaterno;
	}

	public void setTxtNombPaterno(Textbox txtNombPaterno) {
		this.txtNombPaterno = txtNombPaterno;
	}

	public Textbox getTxtCveEmpleado() {
		return txtCveEmpleado;
	}

	public void setTxtCveEmpleado(Textbox txtCveEmpleado) {
		this.txtCveEmpleado = txtCveEmpleado;
	}

	public Button getBtnPesquisa() {
		return btnPesquisa;
	}

	public void setBtnPesquisa(Button btnPesquisa) {
		this.btnPesquisa = btnPesquisa;
	}

	public Tab getTabUsuario() {
		return tabUsuario;
	}

	public void setTabUsuario(Tab tabUsuario) {
		this.tabUsuario = tabUsuario;
	}

	public Tab getTabUbicacion() {
		return tabUbicacion;
	}

	public void setTabUbicacion(Tab tabUbicacion) {
		this.tabUbicacion = tabUbicacion;
	}

	public Perfil getPerfilSeleccionada() {
		return perfilSeleccionada;
	}

	public void setPerfilSeleccionada(Perfil perfilSeleccionada) {
		this.perfilSeleccionada = perfilSeleccionada;
	}

}
