/*
 * 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.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.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.zul.Button;
import org.zkoss.zul.Checkbox;

import com.rjconsultores.ventaboletos.entidad.TipoIdentificacion;
import com.rjconsultores.ventaboletos.enums.TipoClasseServicoBPe;
import com.rjconsultores.ventaboletos.service.TipoIdentificacionService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;

/**
 *
 * @author Administrador
 */
@Controller("editarTipoDocumentoController")
@Scope("prototype")
public class EditarTipoDocumentoController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 5671864130172992489L;

	private static Logger log = LogManager.getLogger(EditarTipoDocumentoController.class);
	

    private TipoIdentificacion tipoDocumento;
    private MyListbox tipoDocumentoList;
    private Button btnApagar;
    private Checkbox chkExibeConfirmacaoTotalbus; 
    private Button btnSalvar;

    @Autowired
	TipoIdentificacionService tipoIdentificacionService;
    private MyTextbox txtDescTipoDocumento;


	@Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        btnSalvar.setVisible(true);
        btnSalvar.setDisabled(false);
        tipoDocumento = (TipoIdentificacion) Executions.getCurrent().getArg().get("tipoDocumento");
        tipoDocumentoList = (MyListbox) Executions.getCurrent().getArg().get("tipoDocumentoList");
        if (tipoDocumento==null) {
            btnApagar.setVisible(Boolean.FALSE);
        }else {
        	chkExibeConfirmacaoTotalbus.setChecked(tipoDocumento.getIndExibeConfirmacaoTotalbus());        	
        }
        txtDescTipoDocumento.focus();
    }

    public void onClick$btnSalvar(Event ev) throws InterruptedException {
    	
       
        txtDescTipoDocumento.getValue();
        chkExibeConfirmacaoTotalbus.getValue();
        String descTipoDoc = txtDescTipoDocumento.getValue();
        if(StringUtils.isBlank(descTipoDoc)) {
        	Messagebox.show(
                    Labels.getLabel("MSG.Registro.Existe"),
                    Labels.getLabel("editarClaseServicioController.window.title"),
                    Messagebox.OK, Messagebox.EXCLAMATION);
        	return;
        }
        try {
        	
        	TipoIdentificacion tipoDocumentoJaExistentes = null;
        	if(tipoDocumento ==null) {
        		tipoDocumentoJaExistentes = tipoIdentificacionService.buscarPorNome(descTipoDoc.trim());        		
        		if(tipoDocumentoJaExistentes ==null){
	        		tipoDocumento = new TipoIdentificacion();
	        		tipoDocumento.setActivo(Boolean.TRUE);
	        		tipoDocumento.setFecmodif(new Date());
	        		tipoDocumento.setDesctipo(txtDescTipoDocumento.getValue());
	        		tipoDocumento.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        		}
        	}
        	           

            if (tipoDocumentoJaExistentes==null) {                        
            	tipoDocumento.setIndExibeConfirmacaoTotalbus(chkExibeConfirmacaoTotalbus.isChecked());
                if (tipoDocumento.getTipoIdentificacionId() == null) {
                    tipoIdentificacionService.suscribir(tipoDocumento);
                    tipoDocumentoList.addItem(tipoDocumento);
                } else {
                    tipoIdentificacionService.actualizacion(tipoDocumento);
                    tipoDocumentoList.updateItem(tipoDocumento);
                }

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

                closeWindow();
            } else {
                Messagebox.show(
                        Labels.getLabel("MSG.Registro.Existe"),
                        Labels.getLabel("editarTipoDocumentoController.window.title"),
                        Messagebox.OK, Messagebox.EXCLAMATION);
            }
        } catch (Exception ex) {
            log.error("Erro ao editar Tipo de Documento", ex);
            Messagebox.show(
                    Labels.getLabel("MSG.Error"),
                    Labels.getLabel("editarTipoDocumentoController.window.title"),
                    Messagebox.OK, Messagebox.ERROR);
        }
    }

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

        if (resp == Messagebox.YES) {
            tipoIdentificacionService.borrar(tipoDocumento);

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

            tipoDocumentoList.removeItem(tipoDocumento);
            closeWindow();
        }
    }
    
    
    public Button getBtnApagar() {
        return btnApagar;
    }

    public void setBtnApagar(Button btnApagar) {
        this.btnApagar = btnApagar;
    }
    
    public List<TipoClasseServicoBPe> getTiposClasseServicoBPe() {
    	return TipoClasseServicoBPe.getList();
    }

	public TipoIdentificacion getTipoDocumento() {
		return tipoDocumento;
	}

	public void setTipoDocumento(TipoIdentificacion tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}

	public Button getBtnSalvar() {
		return btnSalvar;
	}

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

    
}
