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

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.PtovtaEmpresa;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.PtovtaEmpresaService;
import com.rjconsultores.ventaboletos.service.PuntoVentaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import java.util.Calendar;
import java.util.List;
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.Messagebox;

/**
 *
 * @author Rafius
 */
@Controller("editarPtovtaEmpresaController")
@Scope("prototype")
public class EditarPtovtaEmpresaController extends MyGenericForwardComposer {

    @Autowired
    private PtovtaEmpresaService ptovtaEmpresaService;
    @Autowired
    private EmpresaService empresaService;
    @Autowired
    private PuntoVentaService puntoVentaService;
    private List<Empresa> lsEmpresa;
    private List<PuntoVenta> lsPuntoVenta;
    private PtovtaEmpresa ptovtaEmpresa;
    private MyListbox ptovtaEmpresaList;
    private Button btnApagar;
    private static Logger log = Logger.getLogger(EditarPtovtaEmpresaController.class);

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

        lsEmpresa =  UsuarioLogado.getUsuarioLogado().getEmpresa();
        lsPuntoVenta = puntoVentaService.obtenerTodos();

        super.doAfterCompose(comp);

        ptovtaEmpresa = (PtovtaEmpresa) Executions.getCurrent().getArg().get("ptovtaEmpresa");
        ptovtaEmpresaList = (MyListbox) Executions.getCurrent().getArg().get("ptovtaEmpresaList");

        if (ptovtaEmpresa.getPtovtaempresaId() == null) {
            btnApagar.setVisible(Boolean.FALSE);
        }

    }

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

        try {
            ptovtaEmpresa.setActivo(true);
            ptovtaEmpresa.setFecmodif(Calendar.getInstance().getTime());
            ptovtaEmpresa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

            List<PtovtaEmpresa> lsPtoVta = ptovtaEmpresaService.buscar(ptovtaEmpresa);

            boolean podeSalvar = false;
            if (lsPtoVta.isEmpty()) {
                podeSalvar = true;
            } else {
                if (ptovtaEmpresa.getPtovtaempresaId() != null) {
                    for (PtovtaEmpresa c : lsPtoVta) {
                        if (c.getPtovtaempresaId().equals(ptovtaEmpresa.getPtovtaempresaId())) {
                            podeSalvar = true;
                        }
                    }
                }
            }

            if (podeSalvar) {

                if (ptovtaEmpresa.getPtovtaempresaId() == null) {
                    ptovtaEmpresa = ptovtaEmpresaService.suscribir(ptovtaEmpresa);
                    ptovtaEmpresaList.addItem(ptovtaEmpresa);
                } else {
                    ptovtaEmpresa = ptovtaEmpresaService.actualizacion(ptovtaEmpresa);
                    ptovtaEmpresaList.updateItem(ptovtaEmpresa);
                }

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


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

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

            if (resp == Messagebox.YES) {

                ptovtaEmpresaService.borrar(ptovtaEmpresa);

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

                ptovtaEmpresaList.removeItem(ptovtaEmpresa);

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

    public PtovtaEmpresa getPtovtaEmpresa() {
        return ptovtaEmpresa;
    }

    public void setPtovtaEmpresa(PtovtaEmpresa ptovtaEmpresa) {
        this.ptovtaEmpresa = ptovtaEmpresa;
    }

    public MyListbox getPtovtaEmpresaList() {
        return ptovtaEmpresaList;
    }

    public void setPtovtaEmpresaList(MyListbox ptovtaEmpresaList) {
        this.ptovtaEmpresaList = ptovtaEmpresaList;
    }

    public PtovtaEmpresaService getPtovtaEmpresaService() {
        return ptovtaEmpresaService;
    }

    public void setPtovtaEmpresaService(PtovtaEmpresaService ptovtaEmpresaService) {
        this.ptovtaEmpresaService = ptovtaEmpresaService;
    }

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

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

    public List<PuntoVenta> getLsPuntoVenta() {
        return lsPuntoVenta;
    }

    public void setLsPuntoVenta(List<PuntoVenta> lsPuntoVenta) {
        this.lsPuntoVenta = lsPuntoVenta;
    }
}
