/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cosmodas.menu;

import com.cosmodas.FacadeCosmos.WcOpcionesFacadeLocal;
import com.cosmodas.FacadeCosmos.WcOpcionesGruposFacadeLocal;
import com.cosmodas.EntCosmos.WcOpciones;
import com.cosmodas.EntCosmos.WcUsuarios;

import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;

import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuModel;

/**
 * @author obper
 */
@Named(value = "bmenus")
@ViewScoped
public class bmenus implements Serializable {

    @EJB
    WcOpcionesGruposFacadeLocal omdao;
    @EJB
    WcOpcionesFacadeLocal odao;

    private List<WcOpciones> opcionesMenus;
    private WcUsuarios user;
    private MenuModel modelCos;
    private MenuModel modelCon;
    private MenuModel modelrrhh;
    private MenuModel modelConfig;

    public WcUsuarios getUser() {
        return user;
    }

    public void setUser(WcUsuarios user) {
        this.user = user;
    }

    public MenuModel getModelCos() {
        return modelCos;
    }

    public void setModelCos(MenuModel modelCos) {
        this.modelCos = modelCos;
    }

    public MenuModel getModelCon() {
        return modelCon;
    }

    public MenuModel getModelrrhh() {
        return modelrrhh;
    }

    public void setModelrrhh(MenuModel modelrrhh) {
        this.modelrrhh = modelrrhh;
    }

    public void setModelCon(MenuModel modelCon) {
        this.modelCon = modelCon;
    }

    public MenuModel getModelConfig() {
        return modelConfig;
    }

    public void setModelConfig(MenuModel modelConfig) {
        this.modelConfig = modelConfig;
    }

    @PostConstruct
    public void init() {

        this.user = (WcUsuarios) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
        modelCos = new DefaultMenuModel();
        modelCon = new DefaultMenuModel();
        modelrrhh = new DefaultMenuModel();
        modelConfig = new DefaultMenuModel();

        opcionesMenus = user.getGrupoUsuario().getWcOpcionesList();
        establecerMenus();

    }

    public void establecerMenus() {

        for (WcOpciones m : opcionesMenus) {

                if (!m.getTipoMenu() && m.getEstadoOpcion()) {

                    if (m.getApp() == 1){
                        DefaultSubMenu submenuCos = new DefaultSubMenu(m.getNombreOpcion());
                        submenuCos.setIcon(m.getIcono());
                        for (WcOpciones i : opcionesMenus) {
                            if (Objects.equals(m.getIdOpcion(), i.getSubMenuId()) && i.getApp() ==1) {
                                DefaultMenuItem item = new DefaultMenuItem(i.getNombreOpcion());
                                item.setUrl(i.getUrl());
                                submenuCos.addElement(item);
                            }
                        }
                        modelCos.addElement(submenuCos);
                    }else if(m.getApp() == 2){
                        DefaultSubMenu submenuCon = new DefaultSubMenu(m.getNombreOpcion());
                        submenuCon.setIcon(m.getIcono());
                        for (WcOpciones i : opcionesMenus) {
                            if (Objects.equals(m.getIdOpcion(), i.getSubMenuId()) && i.getApp() ==2) {
                                DefaultMenuItem item = new DefaultMenuItem(i.getNombreOpcion());
                                item.setUrl(i.getUrl());
                                submenuCon.addElement(item);
                            }
                        }
                        modelCon.addElement(submenuCon);
                    } else if (m.getApp() == 3) {
                        DefaultSubMenu submenuCon = new DefaultSubMenu(m.getNombreOpcion());
                        submenuCon.setIcon(m.getIcono());
                        for (WcOpciones i : opcionesMenus) {
                            if (Objects.equals(m.getIdOpcion(), i.getSubMenuId()) && i.getApp() ==3) {
                                DefaultMenuItem item = new DefaultMenuItem(i.getNombreOpcion());
                                item.setUrl(i.getUrl());
                                submenuCon.addElement(item);
                            }
                        }
                        modelrrhh.addElement(submenuCon);
                    }else if (m.getApp() == 4) {
                        DefaultSubMenu submenuCon = new DefaultSubMenu(m.getNombreOpcion());
                        submenuCon.setIcon(m.getIcono());
                        for (WcOpciones i : opcionesMenus) {
                            if (Objects.equals(m.getIdOpcion(), i.getSubMenuId()) && i.getApp() ==4) {
                                DefaultMenuItem item = new DefaultMenuItem(i.getNombreOpcion());
                                item.setUrl(i.getUrl());
                                submenuCon.addElement(item);
                            }
                        }
                        modelConfig.addElement(submenuCon);
                    }

                    // modelCos.addElement(submenu);
                }
            }
        }


    public bmenus() {
    }

}
