private static GridData _getListListConPaginacionHijos(int padre, int pageIndex, int pageSize, int pageCount, bool isSearch, string searchField, string searchString, string searchOper)
    {
        try
        {
            int totalRecords = 0;

            DaoOperaciones operacinoes = new DaoOperaciones();
            DaoPerfil aa = new DaoPerfil();

            var resultado = aa.consultaPerfilesAsociadosAMenu(padre);
            totalRecords = resultado.Count();
            List<GridRow> listProcesos = new List<GridRow>();

            #region ("TOTAL==0")
            if (totalRecords == 0)
            {
                return new GridData
                {
                    page = pageIndex,
                    total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                    records = totalRecords,
                    rows = new List<GridRow>(),
                    userMessage = "Se han cargado los datos con éxito.",
                    logMessage = "Carga satisfactoria...",
                    status = Status.OK
                };
            }
            #endregion
            else
            {
                int id = 0;
                foreach (var proceso in resultado)
                {
                    id++;
                    listProcesos.Add(

                    new GridRow()
                    {
                        id = proceso.ID_PERFIL.ToString(),
                        cell = new List<object>(){
                                proceso.ID_PERFIL.ToString(),
                                proceso.NOMBRE_PERFIL,

                        }
                    });
                }

            }

            /// Con la información de los procesos y de la consulta se ensambla el objeto GridData de respuesta.
            ///
            return new GridData
            {
                page = pageIndex,
                total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                records = totalRecords,
                rows = listProcesos,
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK
            };

        }
        catch (Exception ex)
        {
            AppLog.Write(" Error consultando la informacion de Cities ", AppLog.LogMessageType.Error, ex, "IbMallsLog");

            return new GridData
            {
                page = pageIndex,
                total = default(int),
                records = default(int),
                rows = new List<GridRow>(),
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK_WITH_MESSAGES
            };
        }
    }
    public static object DesactivarActivar(

        String ID, bool Activar, int Padre, int Perfil
      )
    {
        try
        {
            DaoOperaciones operacionesDao = new DaoOperaciones();

            if (!Activar)
            {
                #region desactivar perfil de la operacion
                var resultado = operacionesDao.DeleteOperacionesPerfil(ID, Padre);

                if (resultado)
                {

                    return new
                    {
                        Ok = "OK",
                        mensaje = "Se han desasociado los perifiles para este menu, Correctamente"

                    };
                }
                else
                {
                    return new
                    {
                        Ok = "error",
                        mensaje = "No se ha podido actualizar el regitro"

                    };
                }
                #endregion
            }
            else
            {
                DaoPerfil  p = new DaoPerfil() ;
                int i =0;
                var perfil = p.GetPerfiles(1, 999999, ref i);

                var idPerfil = perfil.Where(x => x.PREFIJO == ID).First().ID_PERFIL;

                //validar que el perfil no exista en la base de datos ya
                var existe = operacionesDao.consultaExisteEnbaseDatos(idPerfil, Padre);
                if (existe)
                {
                    return new
                    {
                        Ok = "ER",
                        mensaje = "El perfil ya existe asociado a este menu."

                    };
                }
                else
                {
                    var resultadoinsertar = operacionesDao.InsertarOperacionesPerfil(ID, Padre);
                    if (resultadoinsertar)
                    {

                        return new
                        {
                            Ok = "OK",
                            mensaje = "Se han Asociados los perifiles para este menu, Correctamente"

                        };
                    }
                    else
                    {
                        return new
                        {
                            Ok = "error",
                            mensaje = "No se ha podido actualizar el regitro"

                        };
                    }

                }
            }

        }
        catch (Exception ex)
        {

            return new
            {
                Ok = "Error",
                mensaje = "ha Ocurrido un error inesperado" + ex.ToString()

            };
        }
    }
    public static object EditarAgregar(
       string NombrePerfil, string Descripcion, string Prefijo,
        int ID,
        bool EsEditar)
    {
        try
        {

            DaoPerfil perfilDao = new DaoPerfil();

            GestionRoles gestRoles = new GestionRoles();

            //
            if (!EsEditar)
            {
                #region ("AGREGAR")

                bool resultado = false;
                #region (verificar si existe el rol por el prefijo)
                var existe = gestRoles.RoleExists(Prefijo);
                if (existe) {

                    return new
                    {
                        Ok = "Error",
                        mensaje = "El perfil ya existe en nuestra base de datos, se identifica por el PREFIJO"

                    };
                }

                #endregion
                resultado = perfilDao.InsertPerfil(NombrePerfil, Descripcion, Prefijo);
                #region ("Resultado agregar")
                if (resultado)
                {
                    gestRoles.CreateRole(Prefijo);

                    return new
                    {
                        Ok = "OK",
                        mensaje = "Se ha agregado el registro Correctamente"

                    };
                }
                else
                {
                    return new
                    {
                        Ok = "error",
                        mensaje = "No se ha podido registrar el usuario."

                    };
                }
                #endregion
            }
            else
            {

                var resultado = perfilDao.ActualizarPerfil(NombrePerfil, Descripcion, ID);
                if (resultado)
                {

                    return new
                    {
                        Ok = "OK",
                        mensaje = "Se ha Actualizado el registro Correctamente"

                    };
                }
                else
                {
                    return new
                    {
                        Ok = "error",
                        mensaje = "No se ha podido Actualizar el registro ."

                    };
                }
            }

                #endregion

        }
        catch (Exception ex)
        {

            return new
            {
                Ok = "Error",
                mensaje = "ha Ocurrido un error inesperado: " + ex.ToString()

            };

        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            String PaginaActual = Request.Url.Segments[Request.Url.Segments.Length - 1];

            DaoActivity actividad = new DaoActivity();

            if (Thread.CurrentPrincipal.Identity.IsAuthenticated)
            {
                string usuarioActual = Thread.CurrentPrincipal.Identity.Name;
                //  string nombreUsuario = SessionHelper.GetSessionData("NombreUsuario").ToString();
                var up = new GestionRoles().GetRolesForUser(usuarioActual);
                var tienePermisos = new DaoPerfil().PerfilTieneAcceso(up.First(), PaginaActual);
                if (!tienePermisos)
                {

                    SessionHelper.SetSessionData("SINPERMISOS", "No tiene Permisos para estar en esta pagina");
                    Response.Redirect("../Paginas/Default.aspx");
                }
                MembershipUser u = Membership.GetUser(usuarioActual);
                Guid a = new Guid(u.ProviderUserKey.ToString());
                actividad.registrarLog(a, PaginaActual);

            }
        }
    }
    public static object Eliminar(
        int ID, string Prefijo
        )
    {
        try
        {

            DaoPerfil perfilDao = new DaoPerfil();

                bool resultado = false;

                resultado = perfilDao.DeletePerfil(ID);
                GestionRoles gestRoles = new GestionRoles();
                #region ("Resultado agregar")
                if (resultado)
                {
                    gestRoles.DeleteRole(Prefijo);

                    return new
                    {
                        Ok = "OK",
                        mensaje = "Se ha agregado el registro Correctamente"

                    };
                }
                else
                {
                    return new
                    {
                        Ok = "error",
                        mensaje = "No se ha podido registrar el usuario."

                    };
                }
                #endregion

        }
        catch (Exception ex)
        {

            return new
            {
                Ok = "Error",
                mensaje = "ha Ocurrido un error inesperado: " + ex.ToString()

            };

        }
    }
    private static GridData _getListListConPaginacionHistorial(int pageIndex, int pageSize, int pageCount, bool isSearch, string searchField, string searchString, string searchOper, int Paciented)
    {
        try
        {
            int totalRecords = 0;

            DaoPerfil perfilDao = new DaoPerfil();

            List<Episodios> resultado = new List<Episodios>();
            EpisodiosDao pd = new EpisodiosDao();

            resultado = pd.obtenerEpisodiosPacientes(pageIndex - 1, pageSize, ref totalRecords, Paciented); ;

            List<GridRow> listProcesos = new List<GridRow>();

            #region ("TOTAL==0")
            if (totalRecords == 0)
            {
                return new GridData
                {
                    page = pageIndex,
                    total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                    records = totalRecords,
                    rows = new List<GridRow>(),
                    userMessage = "Se han cargado los datos con éxito.",
                    logMessage = "Carga satisfactoria...",
                    status = Status.OK
                };
            }
            #endregion
            else
            {
                //pageIndex,
                //pageSize, ref totalRecords, estado, banda, UID, plan, cliente);
                int id = 0;

                //foreach (var user in resultado)
                //{
                //    userList.Add(user);
                //}
                foreach (var proceso in resultado)
                {
                    id++;
                    listProcesos.Add(

          new GridRow()
          {
          id = proceso.id_episodio.ToString(),
          cell = new List<object>(){
                        proceso.id_episodio.ToString(),
                        proceso.nombre_intensidad.ToString().ToUpper(),
                        proceso.fecha_episodio.ToString("yyyy/MM/dd HH:mm"),
                        proceso.duracion,

                        }
          });
                }

            }

            /// Con la información de los procesos y de la consulta se ensambla el objeto GridData de respuesta.
            ///
            return new GridData
            {
                page = pageIndex,
                total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                records = totalRecords,
                rows = listProcesos,
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK
            };

        }
        catch (Exception ex)
        {
            AppLog.Write(" Error consultando la informacion de Cities ", AppLog.LogMessageType.Error, ex, "IbMallsLog");

            return new GridData
            {
                page = pageIndex,
                total = default(int),
                records = default(int),
                rows = new List<GridRow>(),
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK_WITH_MESSAGES
            };
        }
    }
    private static GridData _getListListConPaginacion(int pageIndex, int pageSize, int pageCount, bool isSearch, string searchField, string searchString, string searchOper, string NumeroIdentificacion)
    {
        try
        {
            int totalRecords = 0;

            DaoPerfil perfilDao = new DaoPerfil();

            List<Paciente> resultado = new List<Paciente>();
            PacienteDao pd = new PacienteDao();
            if (string.IsNullOrWhiteSpace(NumeroIdentificacion))
            {
                resultado = pd.obtenerPacientes(pageIndex - 1, pageSize, ref totalRecords); ;
            }
            else
            {
                resultado = pd.obtenerPacientes(pageIndex - 1, pageSize, ref totalRecords, NumeroIdentificacion);

            }

            List<GridRow> listProcesos = new List<GridRow>();

            #region ("TOTAL==0")
            if (totalRecords == 0)
            {
                return new GridData
                {
                    page = pageIndex,
                    total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                    records = totalRecords,
                    rows = new List<GridRow>(),
                    userMessage = "Se han cargado los datos con éxito.",
                    logMessage = "Carga satisfactoria...",
                    status = Status.OK
                };
            }
            #endregion
            else
            {
                //pageIndex,
                //pageSize, ref totalRecords, estado, banda, UID, plan, cliente);
                int id = 0;

                //foreach (var user in resultado)
                //{
                //    userList.Add(user);
                //}
                foreach (var proceso in resultado)
                {
                    id++;
                    listProcesos.Add(

          new GridRow()
          {
          id = proceso.id_paciente.ToString(),
          cell = new List<object>(){
                        proceso.id_paciente.ToString(),
                        proceso.nombres_paciente.ToString().ToUpper()+ " " + proceso.apellidos_paciente.ToString().ToUpper(),
                        proceso.ident_paciente,
                        proceso.mail_paciente,
                        proceso.movil_paciente,
                        }
          });
                }

            }

            /// Con la información de los procesos y de la consulta se ensambla el objeto GridData de respuesta.
            ///
            return new GridData
            {
                page = pageIndex,
                total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                records = totalRecords,
                rows = listProcesos,
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK
            };

        }
        catch (Exception ex)
        {
            AppLog.Write(" Error consultando la informacion de Cities ", AppLog.LogMessageType.Error, ex, "IbMallsLog");

            return new GridData
            {
                page = pageIndex,
                total = default(int),
                records = default(int),
                rows = new List<GridRow>(),
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK_WITH_MESSAGES
            };
        }
    }
    public static object Eliminar(
        String ID
        )
    {
        try
        {

            DaoPerfil perfilDao = new DaoPerfil();
            GestionUsuario gestor = new GestionUsuario();

            bool resultado = false;

            resultado = gestor.DeleteUser(ID);
            GestionRoles gestRoles = new GestionRoles();
            #region ("Resultado agregar")
            if (resultado)
            {

                return new
                {
                    OK = "OK",
                    mensaje = "Se ha Eliminado el registro Correctamente"

                };
            }
            else
            {
                return new
                {
                    OK = "error",
                    mensaje = "No se ha podido eliminar el usuario."

                };
            }
            #endregion

        }
        catch (Exception ex)
        {

            return new
            {
                OK = "Error",
                mensaje = "ha Ocurrido un error inesperado: " + ex.ToString()

            };

        }
    }
    private static GridData _getListListConPaginacion(int pageIndex, int pageSize, int pageCount, bool isSearch, string searchField, string searchString, string searchOper, string NumeroIdentificacion)
    {
        try
        {
            int totalRecords = 0;

            DaoPerfil perfilDao = new DaoPerfil();

            List<Paciente> resultado = new List<Paciente>();
            PacienteDao pd = new PacienteDao();

            WebRequest req = WebRequest.Create(@"https://lab-desplieguescc1.herokuapp.com/competitors");

            req.Method = "GET";

            string a = string.Empty;
            string[] arra;
            string[] arradatos;
            List<GridRow> listProcesos = new List<GridRow>();

            try
            {
                HttpWebRequest request = WebRequest.Create(@"https://lab-desplieguescc1.herokuapp.com/competitors") as HttpWebRequest;
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    if (response.StatusCode != HttpStatusCode.OK)
                        throw new Exception(String.Format(
                        "Server error (HTTP {0}: {1}).",
                        response.StatusCode,
                        response.StatusDescription));
                    DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List<Response>));
                    object objResponse = jsonSerializer.ReadObject(response.GetResponseStream());
                    List<Response> jsonResponse = objResponse as List<Response>;

                    foreach (var proceso in jsonResponse)
                    {

                        listProcesos.Add(

                        new GridRow()
                        {
                        id = proceso.id.ToString(),
                        cell = new List<object>(){
                        proceso.id.ToString(),
                        proceso.surname.ToString().ToUpper(),
                        proceso.telephone,
                        proceso.winner,
                        proceso.country,
                        }
                        });
                    }

                    totalRecords =jsonResponse.Count();

                    ///
                        return new GridData
                        {
                            page = pageIndex,
                            total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                            records = totalRecords,
                            rows = listProcesos,
                            userMessage = "Se han cargado los datos con éxito.",
                            logMessage = "Carga satisfactoria...",
                            status = Status.OK
                        };

                }
            }

            catch (Exception e)
            {

            }

                //DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Response));
                //var objResponse = jsonSerializer.ReadObject(resp.GetResponseStream());
                //Response jsonResponse                 = objResponse as Response;

                //using (var respStream = resp.GetResponseStream())
                //{
                //    StreamReader reader = new StreamReader(respStream, Encoding.UTF8);

                //    a = reader.ReadToEnd();

                //    arra = a.Split('}');

                //}
                //foreach (var data in arra)
                //{

            if (string.IsNullOrWhiteSpace(NumeroIdentificacion))
            {
                resultado = pd.obtenerPacientes(pageIndex - 1, pageSize, ref totalRecords); ;
            }
            else
            {
                resultado = pd.obtenerPacientes(pageIndex - 1, pageSize, ref totalRecords, NumeroIdentificacion);

            }

            #region ("TOTAL==0")
            if (totalRecords == 0)
            {
                return new GridData
                {
                    page = pageIndex,
                    total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                    records = totalRecords,
                    rows = new List<GridRow>(),
                    userMessage = "Se han cargado los datos con éxito.",
                    logMessage = "Carga satisfactoria...",
                    status = Status.OK
                };
            }
            #endregion
            else
            {
                //pageIndex,
                //pageSize, ref totalRecords, estado, banda, UID, plan, cliente);
                int id = 0;

                //foreach (var user in resultado)
                //{
                //    userList.Add(user);
                //}
                foreach (var proceso in resultado)
                {
                    id++;
                    listProcesos.Add(

          new GridRow()
          {
          id = proceso.id_paciente.ToString(),
          cell = new List<object>(){
                        proceso.id_paciente.ToString(),
                        proceso.nombres_paciente.ToString().ToUpper()+ " " + proceso.apellidos_paciente.ToString().ToUpper(),
                        proceso.ident_paciente,
                        proceso.mail_paciente,
                        proceso.movil_paciente,
                        }
          });
                }

            }

            /// Con la información de los procesos y de la consulta se ensambla el objeto GridData de respuesta.
            ///
            return new GridData
            {
                page = pageIndex,
                total = (int)Math.Ceiling((double)totalRecords / (double)pageSize),
                records = totalRecords,
                rows = listProcesos,
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK
            };

        }
        catch (Exception ex)
        {
            AppLog.Write(" Error consultando la informacion de Cities ", AppLog.LogMessageType.Error, ex, "IbMallsLog");

            return new GridData
            {
                page = pageIndex,
                total = default(int),
                records = default(int),
                rows = new List<GridRow>(),
                userMessage = "Se han cargado los datos con éxito.",
                logMessage = "Carga satisfactoria...",
                status = Status.OK_WITH_MESSAGES
            };
        }
    }