//protected void CargarDatosEmpresas()
        //{
        //    EmpresaNegocio nEmpresa = new EmpresaNegocio();
        //    List<SPE_OBTIENE_C_EMPRESA_Result> vLstEmpresas = new List<SPE_OBTIENE_C_EMPRESA_Result>();
        //    vLstEmpresas.Add(new SPE_OBTIENE_C_EMPRESA_Result()
        //    {
        //        ID_EMPRESA = 0,
        //        NB_EMPRESA = "Todas"
        //    });

        //    vLstEmpresas.AddRange(nEmpresa.Obtener_C_EMPRESA());

        //    if (vLstEmpresas.Count == 2)
        //        vLstEmpresas.RemoveAt(0);

        //    cmbEmpresas.DataTextField = "NB_EMPRESA";
        //    cmbEmpresas.DataValueField = "ID_EMPRESA";
        //    cmbEmpresas.DataSource = vLstEmpresas;
        //    cmbEmpresas.DataBind();
        //    cmbEmpresas.SelectedIndex = 0;
        //}


        protected void CargarDatosOrganigramaPuesto(int?pIdEmpresa = null, bool?pFgMostrarEmpleados = false, int?pIdPuesto = null, int?pIdDepartamento = null, string pClCampo = null, int?pNoNiveles = null)
        {
            OrganigramaNegocio   nOrganigrama = new OrganigramaNegocio();
            E_ORGANIGRAMA_PUESTO vOrganigrama = nOrganigrama.ObtieneOrganigramaPuesto(pIdPuesto, pIdEmpresa, (bool)pFgMostrarEmpleados, pIdDepartamento, pClCampo, pNoNiveles);

            lstAscendencia.DataTextField  = "nbNodo";
            lstAscendencia.DataValueField = "idNodo";
            lstAscendencia.DataSource     = vOrganigrama.lstNodoAscendencia.OrderByDescending(o => o.noNivel);
            lstAscendencia.DataBind();

            if (vOrganigrama.lstNodoDescendencia.Count == 0)
            {
                vOrganigrama.lstNodoDescendencia.Add(new E_ORGANIGRAMA_NODO_PUESTO()
                {
                    nbNodo = "No hay datos"
                });
            }

            if (vOrganigrama.lstNodoDescendencia.Where(w => w.idNodoSuperior == null).Count() > 1)
            {
                //UtilMensajes.MensajeResultadoDB(rnMensaje, "Por favor selecciona un nodo raíz del selector de plazas.", E_TIPO_RESPUESTA_DB.WARNING, pCallBackFunction: null);
                //lblMensaje.Style.Add("display", "block");
                UtilMensajes.MensajeResultadoDB(rnMensaje, "Error en selección de plaza.", E_TIPO_RESPUESTA_DB.WARNING, pCallBackFunction: null);
                lblMensaje.Style.Add("display", "block");
            }
            else

            {
                int vDiferenciaNievels = vOrganigrama.lstNodoDescendencia.Where(w => w.idNodoSuperior == null).FirstOrDefault().noNivelPuesto - vOrganigrama.lstNodoDescendencia.Where(w => w.idNodoSuperior == null).FirstOrDefault().noNivel;
                if (vDiferenciaNievels > 0)
                {
                    foreach (var item in vOrganigrama.lstNodoDescendencia)
                    {
                        item.noNivelPuesto = item.noNivelPuesto - vDiferenciaNievels;
                    }
                }


                rocPlazas.GroupEnabledBinding.NodeBindingSettings.DataFieldID       = "idNodo";
                rocPlazas.GroupEnabledBinding.NodeBindingSettings.DataFieldParentID = "idNodoSuperior";
                rocPlazas.RenderedFields.NodeFields.Add(new OrgChartRenderedField()
                {
                    DataField = "nbNodo"
                });
                rocPlazas.GroupEnabledBinding.NodeBindingSettings.DataSource = vOrganigrama.lstNodoDescendencia;

                if ((bool)pFgMostrarEmpleados)
                {
                    rocPlazas.GroupEnabledBinding.GroupItemBindingSettings.DataFieldID     = "idItem";
                    rocPlazas.GroupEnabledBinding.GroupItemBindingSettings.DataFieldNodeID = "idNodo";
                    rocPlazas.GroupEnabledBinding.GroupItemBindingSettings.DataSource      = vOrganigrama.lstGrupo;
                }
                rocPlazas.DataBind();
                lblMensaje.Style.Add("display", "none");
            }
        }
        public E_ORGANIGRAMA_PUESTO ObtenerOrganigramaPuesto(int?pIdPlazaOrigen, int?pIdEmpresa, bool pFgMostrarEmpleados, int?pIdDepartamento, string pClCampoAdicional, int?pNuNivel)
        {
            using (context = new SistemaSigeinEntities())
            {
                E_ORGANIGRAMA_PUESTO vOrganigrama = new E_ORGANIGRAMA_PUESTO();

                List <E_ORGANIGRAMA_NODO_PUESTO> lstNodos = context.Database.SqlQuery <E_ORGANIGRAMA_AGRUPA_PUESTO>("EXEC " +
                                                                                                                    "[ADM].[SPE_OBTIENE_ORGANIGRAMA_PLAZA_AGRUPA_PUESTO] " +
                                                                                                                    "@PIN_ID_PLAZA, " +
                                                                                                                    "@PIN_ID_EMPRESA, " +
                                                                                                                    "@PIN_ID_DEPARTAMENTO, " +
                                                                                                                    "@PIN_CL_CAMPO_ADICIONAL, " +
                                                                                                                    "@PIN_NO_NIVELES "
                                                                                                                    , new SqlParameter("@PIN_ID_PLAZA", (object)pIdPlazaOrigen ?? DBNull.Value)
                                                                                                                    , new SqlParameter("@PIN_ID_EMPRESA", (object)pIdEmpresa ?? DBNull.Value)
                                                                                                                    , new SqlParameter("@PIN_ID_DEPARTAMENTO", (object)pIdDepartamento ?? DBNull.Value)
                                                                                                                    , new SqlParameter("@PIN_CL_CAMPO_ADICIONAL", (object)pClCampoAdicional ?? DBNull.Value)
                                                                                                                    , new SqlParameter("@PIN_NO_NIVELES", (object)pNuNivel ?? DBNull.Value)

                                                                                                                    ).Select(s => new E_ORGANIGRAMA_NODO_PUESTO()
                {
                    idNodo         = s.ID_PUESTO,
                    idNodoSuperior = s.ID_PUESTO_SUPERIOR,
                    //idNodoP = s.ID_PLAZA,
                    //idNodoSuperiorP = s.ID_PLAZA_SUPERIOR,
                    clNodo           = s.CL_PUESTO,
                    nbNodo           = String.Format("{0} <br>({1})", s.NB_PUESTO, s.CANTIDAD),
                    clTipoNodo       = s.CL_POSICION_ORGANIGRAMA,
                    clTipoGenealogia = s.CL_TIPO_GENEALOGIA,
                    noNivel          = s.NO_NIVEL ?? 0,
                    noNivelPuesto    = s.NO_NIVEL_ORGANIGRAMA ?? 0
                }).ToList();
                vOrganigrama.lstNodoDescendencia = lstNodos.Where(w => w.clTipoGenealogia.Equals("DESCENDENCIA")).ToList();
                vOrganigrama.lstNodoAscendencia  = lstNodos.Where(w => w.clTipoGenealogia.Equals("ASCENDENCIA")).ToList();

                return(vOrganigrama);

                //List < E_ORGANIGRAMA_NODO_PUESTO> lstNodos = context.SPE_OBTIENE_ORGANIGRAMA_PLAZA(pIdPlazaOrigen, pIdEmpresa, pIdDepartamento, pClCampoAdicional, pNuNivel).Select(s => new E_ORGANIGRAMA_NODO_PUESTO()
                //{
                //    idNodo = s.ID_PLAZA,
                //    idNodoSuperior = s.ID_PLAZA_SUPERIOR,
                //    clNodo = s.CL_PUESTO,
                //    nbNodo = s.NB_PUESTO,
                //    clTipoNodo = s.CL_POSICION_ORGANIGRAMA,
                //    clTipoGenealogia = s.CL_TIPO_GENEALOGIA,
                //    noNivel = s.NO_NIVEL ?? 0,
                //    noNivelPuesto = s.NO_NIVEL_ORGANIGRAMA ?? 0
                //}).ToList();

                //vOrganigrama.lstNodoDescendencia = lstNodos.Where(w => w.clTipoGenealogia.Equals("DESCENDENCIA")).ToList();
                //vOrganigrama.lstNodoAscendencia = lstNodos.Where(w => w.clTipoGenealogia.Equals("ASCENDENCIA")).ToList();

                //return vOrganigrama;
            }
        }