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

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.List;

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.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.Combobox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.MotivoCancelVendaPacote;
import com.rjconsultores.ventaboletos.service.MotivoCancelVendaPacoteService;
import com.rjconsultores.ventaboletos.utilerias.BigDecimalUtil;
import com.rjconsultores.ventaboletos.utilerias.LocaleUtil;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.gui.controladores.tarifas.EnumTipoCancelVendaPacote;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;

/**
 * 
 * @author Bruno
 */
@Controller("editarMotivoCancelVendaPacoteController")
@Scope("prototype")
public class EditarMotivoCancelVendaPacoteController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

	@Autowired
	private MotivoCancelVendaPacoteService motivoCancelVendaPacoteService;
	private MotivoCancelVendaPacote motivoCancelVendaPacote;
	private MyListbox motivoCancelVendaPacoteList;
	private static Logger log = LogManager.getLogger(EditarMotivoCancelVendaPacoteController.class);
	private Textbox txtNome;
	private Button btnApagar;
	private Combobox cmbTipoMotivo;
	private MyTextboxDecimal decPorcMulta;
	private List<String> lsMotivoCancelamento;

	public Button getBtnApagar() {
		return btnApagar;
	}

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

	public Textbox getTxtNome() {
		return txtNome;
	}

	public void setTxtNome(Textbox txtNome) {
		this.txtNome = txtNome;
	}
	public Combobox getCmbTipoMotivo() {
		return cmbTipoMotivo;
	}

	public void setCmbTipoMotivo(Combobox cmbTipoMotivo) {
		this.cmbTipoMotivo = cmbTipoMotivo;
	}

	public MyTextboxDecimal getDecPorcMulta() {
		return decPorcMulta;
	}

	public void setDecPorcMulta(MyTextboxDecimal decPorcMulta) {
		this.decPorcMulta = decPorcMulta;
	}

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

		motivoCancelVendaPacote = (MotivoCancelVendaPacote) Executions.getCurrent().getArg().get("motivoCancelVendaPacote");
		motivoCancelVendaPacoteList = (MyListbox) Executions.getCurrent().getArg().get("motivoCancelVendaPacoteList");
		setLsMotivoCancelamento(EnumTipoCancelVendaPacote.obterBundleValues());
		
		
		decPorcMulta.setValue(BigDecimalUtil.getBigDecimalToStringDouble2CasasDecimaisFormatado(motivoCancelVendaPacote.getPorcmulta() == null ? BigDecimal.ZERO : motivoCancelVendaPacote.getPorcmulta(), LocaleUtil.getLocale()));
		txtNome.focus();
	}
	


	
	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		txtNome.getValue();
		cmbTipoMotivo.getValue();
		decPorcMulta.getValueDecimal();
		try {
			motivoCancelVendaPacote.setActivo(true);
			motivoCancelVendaPacote.setFecmodif(Calendar.getInstance().getTime());
			motivoCancelVendaPacote.setPorcmulta(decPorcMulta.getValueDecimal());
			motivoCancelVendaPacote.setTipomotivocancel(EnumTipoCancelVendaPacote.obterEnumPorDescricao(cmbTipoMotivo.getValue()).getDescricao());
		
			
			motivoCancelVendaPacote.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
			if (motivoCancelVendaPacote.getTipomotivocancel() == null) {
				Messagebox.show(
						Labels.getLabel("editarMotivoCancelVendaPacoteController.MSG.tipo"),
						Labels.getLabel("editarMotivoCancelVendaPacoteController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
			} else {
				if (motivoCancelVendaPacote.getMotivocancelvendapacoteId() == null) {
					List<MotivoCancelVendaPacote> lsMotivoCancelVendaPacote =
							motivoCancelVendaPacoteService.buscar(motivoCancelVendaPacote.getDescmotivocancel(),
									motivoCancelVendaPacote.getTipomotivocancel());

					if (lsMotivoCancelVendaPacote.isEmpty()) {
						motivoCancelVendaPacoteService.suscribir(motivoCancelVendaPacote);
						motivoCancelVendaPacoteList.addItem(motivoCancelVendaPacote);

						Messagebox.show(
								Labels.getLabel("editarMotivoCancelVendaPacoteController.MSG.suscribirOK"),
								Labels.getLabel("editarMotivoCancelVendaPacoteController.window.title"),
								Messagebox.OK, Messagebox.INFORMATION);
					} else {
						Messagebox.show(
								Labels.getLabel("MSG.Registro.Existe"),
								Labels.getLabel("editarMotivoCancelVendaPacoteController.window.title"),
								Messagebox.OK, Messagebox.EXCLAMATION);
					}
				} else {
					motivoCancelVendaPacoteService.actualizacion(motivoCancelVendaPacote);
					motivoCancelVendaPacoteList.updateItem(motivoCancelVendaPacote);

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

				closeWindow();
			}
		} catch (Exception ex) {
			log.error("editarMotivoCancelVendaPacoteController: " + ex);
			Messagebox.show(
					Labels.getLabel("MSG.Error"),
					Labels.getLabel("editarMotivoCancelVendaPacoteController.window.title"),
					Messagebox.OK, Messagebox.ERROR);
		}
	}

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

			if (resp == Messagebox.YES) {

				motivoCancelVendaPacoteService.borrar(motivoCancelVendaPacote);

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

				motivoCancelVendaPacoteList.removeItem(motivoCancelVendaPacote);

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

	public MotivoCancelVendaPacote getMotivoCancelVendaPacote() {
		return motivoCancelVendaPacote;
	}

	public void setMotivoCancelVendaPacote(MotivoCancelVendaPacote motivoCancelVendaPacote) {
		this.motivoCancelVendaPacote = motivoCancelVendaPacote;
	}

	public MyListbox getMotivoCancelVendaPacoteList() {
		return motivoCancelVendaPacoteList;
	}

	public void setMotivoCancelVendaPacoteList(MyListbox motivoCancelVendaPacoteList) {
		this.motivoCancelVendaPacoteList = motivoCancelVendaPacoteList;
	}

	public MotivoCancelVendaPacoteService getMotivoCancelVendaPacoteService() {
		return motivoCancelVendaPacoteService;
	}

	public void setMotivoCancelVendaPacoteService(MotivoCancelVendaPacoteService motivoCancelVendaPacoteService) {
		this.motivoCancelVendaPacoteService = motivoCancelVendaPacoteService;
	}

	public List<String> getLsMotivoCancelamento() {
		return lsMotivoCancelamento;
	}

	public void setLsMotivoCancelamento(List<String> lsMotivoCancelamento) {
		this.lsMotivoCancelamento = lsMotivoCancelamento;
	}
	
}
