public DescargaArchivo obtenerArchivoUsuario(string Userid, string UIDNombreArchivo, int idCarpeta)
        {
            try
            {
                DescargaArchivo retorno = new DescargaArchivo();
                Uniandes.FileControl.FileControl fileControl = new Uniandes.FileControl.FileControl(0);

                DaoUsuario daoUsuario = new DaoUsuario();
                var usuario = daoUsuario.ObtnerUsuario(Userid);
                MetadataArchivoDao daoMetadata = new MetadataArchivoDao();
                var metadata = daoMetadata.obtenerMetadata(UIDNombreArchivo);

                CarpetaPersonalDao cpDao = new CarpetaPersonalDao();
                string path = cpDao.fullPathPorCarpeta(idCarpeta);
                string fullpath = @"" + usuario.CarpetaInicial + @"" + path + @"\\" + metadata.nombre_generado;
                var file = fileControl.GetFileFromFtpRepository(usuario.respositorioKey, fullpath);

                retorno.file = file;
                retorno.nombre = metadata.nombre;

                return retorno;
            }
            catch (Exception ex)
            {
                AppLog.Write(" Error obteniendo la informacion Inicial. ", AppLog.LogMessageType.Error, ex, "OperadorCarpeta");
                throw ex;
            }
        }
    public static object ConsultarMenuUsuarioArbol()
    {
        try
        {
            AppLog.Write(" Ingrese consultar Menu de usuarios ", AppLog.LogMessageType.Info, null, "OperadorCarpeta");
            List<Operacion> operacionesMenuUsua = new List<Operacion>();
            List<Operacion> operacionesMenuUsuaPerfiles = new List<Operacion>();
            List<Operacion> operacionesMenu = new List<Operacion>();

            if (Thread.CurrentPrincipal.Identity.IsAuthenticated)
            {
                DaoUsuario daUsuario = new DaoUsuario();
                string perfil_actual = "";
                List<string> listaPerfilesDelUsuario = new List<string>();

                bool IsDevelopment = false;

                if (SessionHelper.GetSessionData("MenuUsuario") == null && SessionHelper.GetSessionData("PERFIL_ACTUAL")==null)
                {
                    string usuarioActual = Thread.CurrentPrincipal.Identity.Name;

                    MembershipUser u = Membership.GetUser(usuarioActual);
                    SessionHelper.SetSessionData("USUARIO_AUTENTICADO", u.ProviderUserKey.ToString());

                    var usuarioAutenticado = daUsuario.ObtnerUsuario(u.ProviderUserKey.ToString());
                    SessionHelper.SetSessionData("ID_USUARIO_CENTRALIZADOR", usuarioAutenticado.userIdCentralizador);
                    SessionHelper.SetSessionData("USUARIO", usuarioAutenticado);

                    SessionHelper.SetSessionData("IDENTIFICADOR_OPERADOR", "identificadorOperador".GetFromAppCfg());
                    string[] rolUsuarioPropietario = Roles.GetRolesForUser(usuarioActual);

                    perfil_actual = PERFIL_ACTUAL.ToString();
                    operacionesMenuUsuaPerfiles = new GestorOperaciones().ConsultarOperacionesMenuPorPrefijoPerfil(rolUsuarioPropietario.ToList()).ToList();
                    operacionesMenu.AddRange(operacionesMenuUsuaPerfiles);
                    List<Operacion> listaMenu = new List<Operacion>();

                    listaMenu.Add(new Operacion()
                    {
                        ID_OPERACION = 94,
                        Hijos = null,
                        ID_OPERACION_PADRE = 92,
                        NOMBRE = "Ir al Inicio",
                        URL = "../paginas/Default.aspx",
                        AYUDA = ""
                    }); listaMenu.Add(new Operacion()
                    {
                        ID_OPERACION = 94,
                        Hijos = null,
                        ID_OPERACION_PADRE = 92,
                        NOMBRE = "Cambiar Contraseña",
                        URL = "../RestablecerContrasena/CambiarContrasenia.aspx",
                        AYUDA = ""
                    });
                    listaMenu.Add(new Operacion()
                    {
                        ID_OPERACION = 93,
                        Hijos = null,
                        ID_OPERACION_PADRE = 92,
                        NOMBRE = "Cerrar",
                        URL = "../Logoff.aspx",
                        AYUDA = ""
                    });

                    operacionesMenu.Add(new Operacion
                    {
                        ID_OPERACION = 92,
                        Hijos = listaMenu,
                        ID_OPERACION_PADRE = 1,
                        NOMBRE = "Sesión",
                        URL = "",
                        AYUDA = ""
                    });
                    SessionHelper.SetSessionData("MenuUsuario", operacionesMenu);
                    SessionHelper.SetSessionData("PERFIL_ACTUAL", perfil_actual);

                }
                else
                {
                    operacionesMenu = (List<Operacion>)SessionHelper.GetSessionData("MenuUsuario");
                }
                SessionHelper.SetSessionData("MenuUsuario", operacionesMenu);
                return new
                {
                    OK = "OK",
                    Perfil = PERFIL_ACTUAL,
                    EsDesarrollo = IsDevelopment,
                    Menu = operacionesMenu.ToArray(),
                    idusu = ""
                };
            }
            else
            {
                AppLog.Write("La session ha terminado ", AppLog.LogMessageType.Info, null, "OperadorCarpeta");

                return new
                {
                    OK = "SESSIONEND"
                };
            }
        }
        catch (EndSessionException end)
        {
            AppLog.Write("Su session ha finalizado", AppLog.LogMessageType.Info, end, "OperadorCarpeta");
            return new { OK = "Su session ha finalizado" };
        }
        catch (Exception ex)
        {
            AppLog.Write(" Error obteniendo el menu del usuario. ", AppLog.LogMessageType.Error, ex, "OperadorCarpeta");
            return new { OK = "se presento un error consultando el menu de usuario." };
        }
    }
    public static object CrearEditarDocumentos(string anterior, string NuevoNombre, bool Escrear, string identificador)
    {
        string uid = string.Empty;
        string mensaje = string.Empty;
        string OK = "OK";

        EncriptadorTripleDES des = new EncriptadorTripleDES();
        var identificadorArchivo = des.Decrypt(identificador, true);
        var fileControl = new FileControl(Int32.Parse("MaxFileSize".GetFromAppCfg()));
        CarpetaPersonalDao daoCarpeta = new CarpetaPersonalDao();
        DaoUsuario daoUsuaroo = new DaoUsuario();
        try
        {
            uid = (string)SessionHelper.GetSessionData("USUARIO_AUTENTICADO");
        }
        catch (Exception ex)
        {
            return new
            {
                status = "error",
            };
        }
        Decimal? idCarpeta;
        if (identificadorArchivo == "0")
        {
            idCarpeta = null;

        }
        else
        {
            idCarpeta = Convert.ToDecimal(identificadorArchivo);
        }
        var usuario = daoUsuaroo.ObtnerUsuario(uid);
        var full =@""+usuario.CarpetaInicial+ @"\" +@""+daoCarpeta.fullPathPorCarpeta(Convert.ToDecimal(identificadorArchivo));
        if (Escrear)
        {

           var existe=  daoCarpeta.validarExisteCarpeta(NuevoNombre, idCarpeta);
           if (!existe)
           {
               var secreo = fileControl._CreateFolderInFTP(full + @"\" + NuevoNombre, usuario.respositorioKey);

               if (secreo)
               {
                   CarpetaPersonal nueva = new CarpetaPersonal();
                   nueva.idCarpetaPadre = Convert.ToDecimal(identificadorArchivo);
                   nueva.NombreCarpeta = NuevoNombre;
                   nueva.userIdAplicacion = uid;
                   daoCarpeta.RegistrarCarpetaPersonal(nueva);
                   mensaje = "Se ha creado satisfactoriamente la carpeta";
               }
               else
               {
                   OK = "iguales";
                   mensaje = "No Se ha creado la carpeta, existe una con el mismo nombre";
               }
           }
           else
           {
               OK = "iguales";
               mensaje = "No Se ha creado la carpeta, existe una con el mismo nombre";
           }
        }
        else {

            var existe = daoCarpeta.validarExisteCarpeta(NuevoNombre, idCarpeta);

            if (!existe)
            {
                fileControl._RenameFolderInFTP(full, NuevoNombre, usuario.respositorioKey);

                CarpetaPersonal actualizar = new CarpetaPersonal();
                actualizar.IdCarpetaPersonal = Convert.ToDecimal(identificadorArchivo);
                actualizar.NombreCarpeta = NuevoNombre;
                actualizar.userIdAplicacion = uid;
                daoCarpeta.ActualizarCarpetaPersonal(actualizar);
                mensaje = "Se ha actualizado satisfactoriamente la carpeta";
            }
            else
            {
                OK = "iguales";
                mensaje = "No Se ha modificado el nombre de la carpeta, existe una con el mismo nombre";
            }
        }
        return new
        {
            status = OK,
            mensaje =mensaje

        };
    }