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

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.event.Event;
import org.zkoss.zul.Button;

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
import com.rjconsultores.ventaboletos.entidad.SeguradoraEmpresa;
import com.rjconsultores.ventaboletos.entidad.SeguroKm;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.SeguradoraEmpresaService;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;

@Controller("editarSeguradoraEmpresaController")
@Scope("prototype")
public class EditarSeguradoraEmpresaController extends MyGenericForwardComposer {


	private static final long serialVersionUID = 1L;
	
	@Autowired
    private SeguradoraEmpresaService seguradoraEmpresaService;
    @Autowired
    private EmpresaService empresaService;
    
    private List<Empresa> lsEmpresa;
    private MyListbox seguradoraEmpresaList;
    private MyComboboxEstandar cmbEmpresa;
    private Button btnApagar;
    private Button btnSalvar;
    private MyTextbox txtSerie;
    private static Logger log = Logger.getLogger(EditarSeguradoraEmpresaController.class);

    private SeguradoraEmpresa seguradoraEmpresa;
   
    @Override
    public void doAfterCompose(Component comp) throws Exception {

    	lsEmpresa = empresaService.obtenerTodos();

        super.doAfterCompose(comp);

        seguradoraEmpresa = (SeguradoraEmpresa) Executions.getCurrent().getArg().get("SeguradoraEmpresa");
        seguradoraEmpresaList  = (MyListbox) Executions.getCurrent().getArg().get("seguradoraEmpresaList");
    }

    public void onClick$btnSalvar(Event ev) throws InterruptedException {

        try {
        	Empresa empresa = (Empresa)cmbEmpresa.getSelectedItem().getValue();
            if (seguradoraEmpresaService.existe(empresa, txtSerie.getValue())) {
                Messagebox.show(
                        Labels.getLabel("editarSeguradoraEmpresaController.MSG.existe"),
                        Labels.getLabel("editarSeguradoraEmpresaController.window.title"),
                        Messagebox.OK, Messagebox.INFORMATION);
                return;
            }

            seguradoraEmpresa.setEmpresa(empresa);
            seguradoraEmpresa.setSerie(txtSerie.getValue());
            
            if (seguradoraEmpresa.getSeguradoraEmpresaId() == null){
            	seguradoraEmpresaService.suscribir(seguradoraEmpresa);
            } else {
            	seguradoraEmpresaService.actualizacion(seguradoraEmpresa);
            }
            
            seguradoraEmpresaList.addItemNovo(seguradoraEmpresa);
            
            Messagebox.show(
                    Labels.getLabel("editarSeguradoraEmpresaController.MSG.suscribirOK"),
                    Labels.getLabel("editarSeguradoraEmpresaController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);

            closeWindow();


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

        }
    }

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

			if (resp == Messagebox.YES) {
				seguradoraEmpresaService.borrar(seguradoraEmpresa);

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

				seguradoraEmpresaList.removeItem(seguradoraEmpresa);

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

	public List<Empresa> getLsEmpresa() {
		return lsEmpresa;
	}

	public void setLsEmpresa(List<Empresa> lsEmpresa) {
		this.lsEmpresa = lsEmpresa;
	}

	public MyComboboxEstandar getCmbEmpresa() {
		return cmbEmpresa;
	}

	public void setCmbEmpresa(MyComboboxEstandar cmbEmpresa) {
		this.cmbEmpresa = cmbEmpresa;
	}

	public Button getBtnApagar() {
		return btnApagar;
	}

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

	public Button getBtnSalvar() {
		return btnSalvar;
	}

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

	public MyTextbox getTxtSerie() {
		return txtSerie;
	}

	public void setTxtSerie(MyTextbox txtSerie) {
		this.txtSerie = txtSerie;
	}

	public SeguradoraEmpresa getSeguradoraEmpresa() {
		return seguradoraEmpresa;
	}

	public void setSeguradoraEmpresa(SeguradoraEmpresa seguradoraEmpresa) {
		this.seguradoraEmpresa = seguradoraEmpresa;
	}
}
