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

import java.util.List;

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.Textbox;

import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.service.ConferenciaComissaoService;
import com.rjconsultores.ventaboletos.service.PuntoVentaService;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;

@Scope("prototype")
@Controller("informeIrregularidadeController")
public class InformeIrregularidadeController extends MyGenericForwardComposer {
	private static final long serialVersionUID = 1L;

	@Autowired
	PuntoVentaService puntoVentaService;

	@Autowired  
	ConferenciaComissaoService conferenciaComissaoService;

	private Textbox txtEmail;
	private Textbox txtConteudoEmail;

	private PuntoVenta puntoVenta;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		Integer puntoVentaId = (Integer) Executions.getCurrent().getArg().get("puntoVentaId");
		puntoVenta = puntoVentaService.obtenerID(puntoVentaId);
		
		txtConteudoEmail.setText(criarConteudoEmail(
				(List) Executions.getCurrent().getArg().get("listNumSerie")));
	}

	private String criarConteudoEmail(List listNumSerie) {
		StringBuilder emailEcf= new StringBuilder( Labels.getLabel("informeIrregularidadeController.mail.msg"));
		
		for(Object object:listNumSerie){
			emailEcf.append("\n")
			.append(object);
		}
		
		return emailEcf.toString();
	}

	public void onClick$btnEnviar(Event event) throws InterruptedException {
		try {
			conferenciaComissaoService.enviarEmailIrregularidadeECF(txtEmail.getValue(),
					txtConteudoEmail.getValue(), Labels.getLabel("informeIrregularidadeController.window.title"));
		} catch (Exception e) {
			Messagebox.show(e.getMessage(), Labels.getLabel("informeIrregularidadeController.mail.erro"),
					Messagebox.OK,
					Messagebox.ERROR);
			e.printStackTrace();
		}
		closeWindow();
	}

	public void onClick$btnCancelar(Event event) {
		closeWindow();
	}

	public PuntoVenta getPuntoVenta() {
		return puntoVenta;
	}
}
