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

import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.ParamCanjePunto;
import com.rjconsultores.ventaboletos.service.ParadaService;
import com.rjconsultores.ventaboletos.service.ParamCanjePuntoService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;
import java.util.Calendar;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.zkoss.zk.ui.Component;
import org.springframework.stereotype.Controller;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
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.Datebox;
import org.zkoss.zul.Doublebox;

/**
 *
 * @author Rafius
 */
@Controller("editarParamCanjePuntoController")
@Scope("prototype")
public class EditarParamCanjePuntoController extends MyGenericForwardComposer {

    @Autowired
    private ParamCanjePuntoService paramCanjePuntoService;
    @Autowired
    private ParadaService paradaService;
    private MyTextboxDecimal porcentaje;
    private ParamCanjePunto paramCanjePunto;
    private MyListbox paramCanjePuntoList;
    private static Logger log = Logger.getLogger(EditarParamCanjePuntoController.class);
    private MyComboboxParada cmbOrigem;
    private MyComboboxParada cmbDestino;
    private Datebox fecInicio;
    private Datebox fecFinal;
    private Button btnApagar;

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

        paramCanjePunto = (ParamCanjePunto) Executions.getCurrent().getArg().get("paramCanjePunto");
        paramCanjePuntoList = (MyListbox) Executions.getCurrent().getArg().get("paramCanjePuntoList");

        if (paramCanjePunto.getParamcanjepuntoId() == null) {
            btnApagar.setVisible(Boolean.FALSE);
        } else {
            Parada origem = paramCanjePunto.getOrigem();
            if (origem != null) {
                cmbOrigem.setText(origem.getDescparada());
            }

            Parada destino = paramCanjePunto.getDestino();
            if (destino != null) {
                cmbDestino.setText(destino.getDescparada());
            }
        }

        fecInicio.focus();
    }

    public void onClick$btnSalvar(Event ev) throws InterruptedException {
        fecInicio.getValue();
        fecFinal.getValue();
        cmbOrigem.getValue();
        cmbDestino.getValue();
        porcentaje.getValue();
//        if (porcentaje.getValue().compareTo(new Double("100")) > 0) {
//            Clients.wrongValue(porcentaje, Labels.getLabel("MSG.Porcentaje"));
//            return;
//        }
        Parada origen = (Parada) cmbOrigem.getSelectedItem().getValue();
        Parada destino = (Parada) cmbDestino.getSelectedItem().getValue();
        if (origen.equals(destino) && !origen.getParadaId().equals(-1)) {
            Messagebox.show(
                    Labels.getLabel("editarConfiguracionReservacionController.MSG.selectItemDiferente"),
                    Labels.getLabel("editarConfiguracionReservacionController.window.title"),
                    Messagebox.OK, Messagebox.EXCLAMATION);
            return;
        }
        if (fecInicio.getValue().after(fecFinal.getValue())) {
            try {
                Messagebox.show(Labels.getLabel("editarParamCanjePuntoController.MSG.busquedaPeriodo"), Labels.getLabel("editarParamCanjePuntoController.window.title"), Messagebox.OK, Messagebox.INFORMATION);
            } catch (InterruptedException ex) {
                log.error(ex);
            }
        } else {
            try {
                paramCanjePunto.setActivo(true);
                paramCanjePunto.setFecmodif(Calendar.getInstance().getTime());
                paramCanjePunto.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                paramCanjePunto.setOrigem((Parada) cmbOrigem.getSelectedItem().getValue());
                paramCanjePunto.setDestino((Parada) cmbDestino.getSelectedItem().getValue());

                if (paramCanjePunto.getParamcanjepuntoId() == null) {
                    paramCanjePuntoService.suscribir(paramCanjePunto);
                    paramCanjePuntoList.addItem(paramCanjePunto);
                } else {
                    paramCanjePuntoService.actualizacion(paramCanjePunto);
                    paramCanjePuntoList.updateItem(paramCanjePunto);
                }

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

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

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

            if (resp == Messagebox.YES) {

                paramCanjePuntoService.borrar(paramCanjePunto);

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

                paramCanjePuntoList.removeItem(paramCanjePunto);

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

    public MyComboboxParada getCmbDestino() {
        return cmbDestino;
    }

    public void setCmbDestino(MyComboboxParada cmbDestino) {
        this.cmbDestino = cmbDestino;
    }

    public MyComboboxParada getCmbOrigem() {
        return cmbOrigem;
    }

    public void setCmbOrigem(MyComboboxParada cmbOrigem) {
        this.cmbOrigem = cmbOrigem;
    }

    public ParadaService getParadaService() {
        return paradaService;
    }

    public void setParadaService(ParadaService paradaService) {
        this.paradaService = paradaService;
    }

    public ParamCanjePunto getParamCanjePunto() {
        return paramCanjePunto;
    }

    public void setParamCanjePunto(ParamCanjePunto paramCanjePunto) {
        this.paramCanjePunto = paramCanjePunto;
    }

    public MyListbox getParamCanjePuntoList() {
        return paramCanjePuntoList;
    }

    public void setParamCanjePuntoList(MyListbox paramCanjePuntoList) {
        this.paramCanjePuntoList = paramCanjePuntoList;
    }

    public ParamCanjePuntoService getParamCanjePuntoService() {
        return paramCanjePuntoService;
    }

    public void setParamCanjePuntoService(ParamCanjePuntoService paramCanjePuntoService) {
        this.paramCanjePuntoService = paramCanjePuntoService;
    }


}
