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

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.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.Messagebox;
import org.zkoss.zul.api.Datebox;

import com.rjconsultores.ventaboletos.entidad.Cliente;
import com.rjconsultores.ventaboletos.entidad.Empleado;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.TipoEmpleado;
import com.rjconsultores.ventaboletos.service.EmpleadoService;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.TipoEmpleadoService;
import com.rjconsultores.ventaboletos.service.impl.EmpleadoServiceImpl;
import com.rjconsultores.ventaboletos.service.impl.TipoEmpleadoServiceImpl;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;

@Controller("editarEmpleadoController")
@Scope("prototype")
public class EditarEmpleadoController extends MyGenericForwardComposer {

	private static Logger log = Logger.getLogger(EditarEmpleadoController.class);
	
	
	private MyTextbox txtCveEmpleado;
	private MyTextbox txtNombEmpleado;
	private MyTextbox txtApellidoPaterno;
	private MyTextbox txtApellidoMaterno;
	private MyTextbox txtDescCalle;
	private MyTextbox txtNumExtInt;
	private MyTextbox txtCodPostal;
	private MyTextbox txtDesccorreo;
	
	private Datebox datFecNacimiento;
	private Datebox datFecIngreso;
	
	private MyListbox empleadoList;
	
	private Button btnApagar;
	private Button btnSalvar;
	private Button btnFechar;
	
	@Autowired
	private EmpleadoService empleadoService;
	private Empleado empleado;
	
	private List<TipoEmpleado> lsTipoEmpleado;
	private List<Empresa> lsEmpresa;
	
	@Autowired
	private TipoEmpleadoService tipoEmpleadoService;
	
	@Autowired
	private EmpresaService empresaService;
	
	@Override
	public void doAfterCompose(Component comp) throws Exception {		
		super.doAfterCompose(comp);		
		lsTipoEmpleado = tipoEmpleadoService.obtenerTodos();
		lsEmpresa = empresaService.obtenerTodos();
		
		empleado = (Empleado) Executions.getCurrent().getArg().get("empleado");
		empleadoList = (MyListbox) Executions.getCurrent().getArg().get("empleadoList");
	}
	
	public MyListbox getEmpleadoList() {
		return empleadoList;
	}

	public void setEmpleadoList(MyListbox empleadoList) {
		this.empleadoList = empleadoList;
	}

	public Button getBtnApagar() {
		return btnApagar;
	}

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

	public Button getBtnSalvar() {
		return btnSalvar;
	}

	public void setBtnSalvar(Button btnSalvar) {
		this.btnSalvar = btnSalvar;
	}

	public Button getBtnFechar() {
		return btnFechar;
	}

	public void setBtnFechar(Button btnFechar) {
		this.btnFechar = btnFechar;
	}

	public EmpleadoService getEmpleadoService() {
		return empleadoService;
	}

	public void setEmpleadoService(EmpleadoService empleadoService) {
		this.empleadoService = empleadoService;
	}

	public Empleado getEmpleado() {
		return empleado;
	}

	public void setEmpleado(Empleado empleado) {
		this.empleado = empleado;
	}

	public TipoEmpleadoService getTipoEmpleadoService() {
		return tipoEmpleadoService;
	}

	public void setTipoEmpleadoService(TipoEmpleadoService tipoEmpleadoService) {
		this.tipoEmpleadoService = tipoEmpleadoService;
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		empleado.setCodPostal(txtCodPostal.getValue());
		empleado.setCveEmpleado(txtCveEmpleado.getValue());
		empleado.setDescCalle(txtDescCalle.getValue());
		empleado.setFecNacimiento(datFecNacimiento.getValue());
		empleado.setNombEmpleado(txtNombEmpleado.getValue());
		empleado.setNombMaterno(txtApellidoMaterno.getValue());
		empleado.setNombPaterno(txtApellidoPaterno.getValue());
		empleado.setNumExtInt(txtNumExtInt.getValue());
		empleado.setDesccorreo(txtDesccorreo.getValue().toLowerCase());
		
		if (empleado.getEmpleadoId() == null) {
			empleadoService.suscribir(empleado);
		} else {
			empleadoService.actualizacion(empleado);
		}

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

		closeWindow();
	}

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

		if (resp == Messagebox.YES) {
			empleadoService.borrar(empleado);

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

			closeWindow();
		}
	}

	public MyTextbox getTxtCveEmpleado() {
		return txtCveEmpleado;
	}

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

	public MyTextbox getTxtNombEmpleado() {
		return txtNombEmpleado;
	}

	public void setTxtNombEmpleado(MyTextbox txtNombEmpleado) {
		this.txtNombEmpleado = txtNombEmpleado;
	}

	public MyTextbox getTxtApellidoPaterno() {
		return txtApellidoPaterno;
	}

	public void setTxtApellidoPaterno(MyTextbox txtApellidoPaterno) {
		this.txtApellidoPaterno = txtApellidoPaterno;
	}

	public MyTextbox getTxtApellidoMaterno() {
		return txtApellidoMaterno;
	}

	public void setTxtApellidoMaterno(MyTextbox txtApellidoMaterno) {
		this.txtApellidoMaterno = txtApellidoMaterno;
	}

	public MyTextbox getTxtDescCalle() {
		return txtDescCalle;
	}

	public void setTxtDescCalle(MyTextbox txtDescCalle) {
		this.txtDescCalle = txtDescCalle;
	}

	public MyTextbox getTxtNumExtInt() {
		return txtNumExtInt;
	}

	public void setTxtNumExtInt(MyTextbox txtNumExtInt) {
		this.txtNumExtInt = txtNumExtInt;
	}

	public MyTextbox getTxtCodPostal() {
		return txtCodPostal;
	}

	public void setTxtCodPostal(MyTextbox txtCodPostal) {
		this.txtCodPostal = txtCodPostal;
	}

	public Datebox getDatFecNacimiento() {
		return datFecNacimiento;
	}

	public void setDatFecNacimiento(Datebox datFecNacimiento) {
		this.datFecNacimiento = datFecNacimiento;
	}

	public Datebox getDatFecIngreso() {
		return datFecIngreso;
	}

	public void setDatFecIngreso(Datebox datFecIngreso) {
		this.datFecIngreso = datFecIngreso;
	}

	public List<TipoEmpleado> getLsTipoEmpleado() {
		return lsTipoEmpleado;
	}

	public void setLsTipoEmpleado(List<TipoEmpleado> lsTipoEmpleado) {
		this.lsTipoEmpleado = lsTipoEmpleado;
	}

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

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

	public EmpresaService getEmpresaService() {
		return empresaService;
	}

	public void setEmpresaService(EmpresaService empresaService) {
		this.empresaService = empresaService;
	}
	
}
