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

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
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.WrongValueException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.Estado;
import com.rjconsultores.ventaboletos.service.CorridaService;
import com.rjconsultores.ventaboletos.service.EstadoService;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;

@Controller("atualizarCorridaFecHusoFecVeranoController")
@Scope("prototype")
public class AtualizarCorridaFecHusoFecVeranoController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

	@Autowired
	private EstadoService estadoService;

	@Autowired
	private CorridaService corridaService;

	private Textbox datInicial;
	private Combobox cmbEstado;
	private List<Estado> lsEstados;
	private Intbox ibxCorridaId;

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

		lsEstados = estadoService.obtenerTodos();
	}

	public List<Estado> getLsEstados() {
		return lsEstados;
	}

	public void setLsEstados(List<Estado> lsEstados) {
		this.lsEstados = lsEstados;
	}

	public void onClick$btnAtualizarCorridas(Event ev) throws InterruptedException, WrongValueException, ParseException {

		Comboitem cbiEstado = cmbEstado.getSelectedItem();
		if (cbiEstado != null) {
			DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
			Estado estado = (Estado) cbiEstado.getValue();
			Date dataAPartirDe = df.parse(datInicial.getValue());
			Integer corridaId = ibxCorridaId.getValue();
			Boolean sucesso = false;
			if (corridaId == null) {
				sucesso = corridaService.atualizarCorridaFecHusoFecVerano(estado, dataAPartirDe);
			} else {
				sucesso = corridaService.atualizarCorridaFecHusoFecVerano(estado, dataAPartirDe, corridaId);
			}

			if (sucesso) {
				Messagebox.show(
						Labels.getLabel("atualizarCorridaFecHusoFecVeranoController.MSG.borrarOK"),
						Labels.getLabel("atualizarCorridaFecHusoFecVeranoController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);

			} else {
				Messagebox.show(
						Labels.getLabel("MSG.Error"),
						Labels.getLabel("atualizarCorridaFecHusoFecVeranoController.window.title"),
						Messagebox.OK, Messagebox.ERROR);
			}
		}
	}

}
