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

import java.util.Date;
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.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;

import com.rjconsultores.ventaboletos.entidad.Cotacao;
import com.rjconsultores.ventaboletos.entidad.Moneda;
import com.rjconsultores.ventaboletos.service.CotacaoService;
import com.rjconsultores.ventaboletos.service.MonedaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar;
import com.rjconsultores.ventaboletos.web.utilerias.MyDatebox;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;

@Controller("editarCotacaoController")
@Scope("prototype")
public class EditarCotacaoController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

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

	@Autowired
	private MonedaService monedaService;

	@Autowired
	private CotacaoService cotacaoService;

	private List<Moneda> lsMoneda;
	private MyComboboxEstandar cmbMoneda;
	private MyTextboxDecimal txtValor;
	private Cotacao cotacao;
	private MyListbox cotacaoList;
	private MyDatebox txtFecmodif;
	private BusquedaCotacaoController busquedaCotacaoController;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		lsMoneda = monedaService.obterTodosExcetoReais();

		super.doAfterCompose(comp);

		cotacao = (Cotacao) Executions.getCurrent().getArg().get("cotacao");
		cotacaoList = (MyListbox) Executions.getCurrent().getArg().get("cotacaoList");
		busquedaCotacaoController = (BusquedaCotacaoController) Executions.getCurrent().getArg().get("busquedaCotacaoController");

		txtFecmodif.setDisabled(Boolean.TRUE);

		if (cotacao.getCotacaoId() == null) {
			txtFecmodif.setValue(new Date());
		} else {
			txtFecmodif.setValue(cotacao.getFecmodif());
			txtValor.setDisabled(Boolean.TRUE);
			cmbMoneda.setDisabled(Boolean.TRUE);
		}
	}

	public void onClick$btnSalvar(Event ev) {
		if (cotacao.getCotacaoId() == null) {

			if (txtValor.getValueDecimal() == null && cmbMoneda.getSelectedItem() == null) {
				return;
			}

			cotacao.setActivo(Boolean.TRUE);
			cotacao.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
			cotacao.setFecmodif(new Date());
			cotacao.setValor(txtValor.getValueDecimal());

			cotacaoService.inativarCotacoesAntigas(cotacao.getMoneda());
			cotacaoService.suscribir(cotacao);
			cotacaoList.addItemNovo(cotacao);
			busquedaCotacaoController.refreshListaPesquisa(Boolean.FALSE);
		}
		closeWindow();
	}

	public MyComboboxEstandar getCmbMoneda() {
		return cmbMoneda;
	}

	public void setCmbMoneda(MyComboboxEstandar cmbMoneda) {
		this.cmbMoneda = cmbMoneda;
	}

	public MonedaService getMonedaService() {
		return monedaService;
	}

	public void setMonedaService(MonedaService monedaService) {
		this.monedaService = monedaService;
	}

	public CotacaoService getCotacaoService() {
		return cotacaoService;
	}

	public void setCotacaoService(CotacaoService cotacaoService) {
		this.cotacaoService = cotacaoService;
	}

	public List<Moneda> getLsMoneda() {
		return lsMoneda;
	}

	public void setLsMoneda(List<Moneda> lsMoneda) {
		this.lsMoneda = lsMoneda;
	}

	public MyTextboxDecimal getTxtValor() {
		return txtValor;
	}

	public void setTxtValor(MyTextboxDecimal txtValor) {
		this.txtValor = txtValor;
	}

	public Cotacao getCotacao() {
		return cotacao;
	}

	public void setCotacao(Cotacao cotacao) {
		this.cotacao = cotacao;
	}

	public MyListbox getCotacaoList() {
		return cotacaoList;
	}

	public void setCotacaoList(MyListbox cotacaoList) {
		this.cotacaoList = cotacaoList;
	}

	public MyDatebox getTxtFecmodif() {
		return txtFecmodif;
	}

	public void setTxtFecmodif(MyDatebox txtFecmodif) {
		this.txtFecmodif = txtFecmodif;
	}

}
