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

import java.util.Calendar;
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.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Intbox;

import com.rjconsultores.ventaboletos.entidad.Ciudad;
import com.rjconsultores.ventaboletos.entidad.Colonia;
import com.rjconsultores.ventaboletos.service.ColoniaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxCiudad;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;

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

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Autowired
    private ColoniaService coloniaService;
    private Colonia colonia;
    private MyListbox coloniaList;
    private static Logger log = Logger.getLogger(EditarColoniaController.class);
    private MyTextbox txtNome;
    private Button btnApagar;
    private MyComboboxCiudad cmbCiudad;
    private Intbox codpostal;

    

    public Colonia getColonia() {
        return colonia;
    }

    public void setColonia(Colonia colonia) {
        this.colonia = colonia;
    }

    public Button getBtnApagar() {
        return btnApagar;
    }

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

    public MyListbox getColoniaList() {
        return coloniaList;
    }

    public void setColoniaList(MyListbox coloniaList) {
        this.coloniaList = coloniaList;
    }

    public MyTextbox getTxtNome() {
        return txtNome;
    }

    public void setTxtNome(MyTextbox txtNome) {
        this.txtNome = txtNome;
    }

    public ColoniaService getColoniaService() {
        return coloniaService;
    }

    public void setColoniaService(ColoniaService coloniaService) {
        this.coloniaService = coloniaService;
    }

    public Combobox getCmbCiudad() {
        return cmbCiudad;
    }

    public void setCmbCiudad(MyComboboxCiudad cmbCiudad) {
        this.cmbCiudad = cmbCiudad;
    }

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

        super.doAfterCompose(comp);

        colonia = (Colonia) Executions.getCurrent().getArg().get("colonia");
        coloniaList = (MyListbox) Executions.getCurrent().getArg().get("coloniaList");

        if (colonia.getColoniaId() == null) {
            btnApagar.setVisible(Boolean.FALSE);
        } else {
            cmbCiudad.setText(colonia.getCiudad().getNombciudad());

        }
        txtNome.focus();
    }

    @SuppressWarnings("deprecation")
	public void onClick$btnSalvar(Event ev) throws InterruptedException {
        txtNome.getValue();
        codpostal.getValue();
        cmbCiudad.getValue();
        try {
            colonia.setActivo(Boolean.TRUE);
            colonia.setFecmodif(Calendar.getInstance().getTime());
            colonia.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

            Comboitem ciudad = cmbCiudad.getSelectedItem();
            if (ciudad != null) {
                colonia.setCiudad((Ciudad) ciudad.getValue());
            }


            List<Colonia> lsColonia = coloniaService.buscar(colonia.getDesccolonia());

            boolean podeSalvar = false;
            if (lsColonia.isEmpty()) {
                podeSalvar = true;
            } else {
                if (colonia.getColoniaId() != null) {
                    for (Colonia c : lsColonia) {
                        if (c.getColoniaId().equals(colonia.getColoniaId())) {
                            podeSalvar = true;
                        }
                    }
                } else {
                    for (Colonia c : lsColonia) {
                        if (!(c.getDesccolonia().toUpperCase().equals(colonia.getDesccolonia())) || !(c.getCodpostal().equals(colonia.getCodpostal()))
                                || !(c.getCiudad().equals(colonia.getCiudad()))) {
                            podeSalvar = true;
                        } else {
                            podeSalvar = false;
                            break;
                        }
                    }
                }
            }
            cmbCiudad.getValue(colonia.getColoniaId() == null);
            if (podeSalvar) {
                if (colonia.getColoniaId() == null) {
                    coloniaService.suscribir(colonia);
                    coloniaList.addItem(colonia);
                } else {
                    coloniaService.actualizacion(colonia);
                    coloniaList.updateItem(colonia);
                }

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

                closeWindow();
            } else {
                Messagebox.show(
                        Labels.getLabel("MSG.Registro.Existe"),
                        Labels.getLabel("editarColoniaController.window.title"),
                        Messagebox.OK, Messagebox.EXCLAMATION);
            }
        }catch(WrongValueException e){
        	throw e;
        }
        catch (Exception ex) {
            log.error("editarColoniaController: " + ex);
            Messagebox.show(
                    Labels.getLabel("MSG.Error"),
                    Labels.getLabel("editarColoniaController.window.title"),
                    Messagebox.OK, Messagebox.ERROR);
        }
    }

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

        if (resp == Messagebox.YES) {

            coloniaService.borrar(colonia);

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

            coloniaList.removeItem(colonia);

            closeWindow();
        }
    }

    /**
     * @return the codpostal
     */
    public Intbox getCodpostal() {
        return codpostal;
    }

    /**
     * @param codpostal the codpostal to set
     */
    public void setCodpostal(Intbox codpostal) {
        this.codpostal = codpostal;
    }
}
