/// <summary>
        /// Método para actualizar el estatus de una versión.
        /// </summary>
        /// <param name="id_version"></param>
        /// <param name="id_estatus"></param>
        /// <returns></returns>
        public int UpdateEstatus_Version(int id_version, int id_estatus)
        {
            try
            {
                //Se establece la conexión a la base de datos.
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    //creación del objeto tipo TBL_archivo.
                    TBL_VERSION obj = Conexion.TBL_VERSION.Where(x => x.ID_VERSION == id_version).FirstOrDefault();

                    //Asignamos los  parámetros recibidos a cada uno de los valores de los objetos.
                    obj.ID_ESTATUS_VERSION = id_estatus;

                    //Se cambia el estado de registro a modificado.
                    Conexion.Entry(obj).State = EntityState.Modified;

                    //Se guardan los cambios y se retorna el número de registros afectados.
                    return(Conexion.SaveChanges());
                }
            }
            catch (Exception)
            {
                //Si encuentra error devuelve cero.
                return(0);
            }
        }
        /// <summary>
        /// Método que actua liza el campo CODE_VALIDATION
        /// </summary>
        /// <param name="idVersion"></param>
        /// <param name="codeValidation"></param>
        /// <returns></returns>
        public int UpdateCodeValidation(int idVersion, string codeValidation)
        {
            try
            {
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    TBL_VERSION version = Conexion.TBL_VERSION.Where(x => x.ID_VERSION == idVersion).FirstOrDefault();

                    version.CODE_VALIDATION = codeValidation;

                    Conexion.Entry(version).State = EntityState.Modified;

                    return(Conexion.SaveChanges());
                }
            }
            catch (Exception)
            {
                return(0);
            }
        }
        /// <summary>
        /// Actualiza la versión en classificationLeve y usuario elaboro.
        /// </summary>
        /// <param name="idVersion"></param>
        /// <param name="idClassificationLevel"></param>
        /// <param name="idUsuario"></param>
        /// <returns></returns>
        public int UpdateVersion(int idVersion, int idClassificationLevel, string idUsuario)
        {
            try
            {
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    TBL_VERSION _VERSION = Conexion.TBL_VERSION.Where(x => x.ID_VERSION == idVersion).FirstOrDefault();

                    _VERSION.ID_CLASSIFICATION_LEVEL = idClassificationLevel;
                    _VERSION.ID_USUARIO_ELABORO      = idUsuario;

                    Conexion.Entry(_VERSION).State = EntityState.Modified;

                    return(Conexion.SaveChanges());
                }
            }
            catch (Exception)
            {
                return(0);
            }
        }
        /// <summary>
        /// metodo para actualizar el campo de numero de copias
        /// de la tabla TBL_VERSION
        /// </summary>
        /// <param name="id_version"></param>
        /// <param name="num_copias"></param>
        /// <returns></returns>
        public int UpdateNumCopias(int id_version, int num_copias)
        {
            try
            {
                using (var conexion = new EntitiesControlDocumentos())
                {
                    TBL_VERSION obj = conexion.TBL_VERSION.Where(x => x.ID_VERSION == id_version).FirstOrDefault();

                    obj.NO_COPIAS = num_copias;

                    //se cambia el estado de registro a modificado
                    conexion.Entry(obj).State = EntityState.Modified;

                    //se guardan los cambios y se retorna el numero de registros afectados
                    return(conexion.SaveChanges());
                }
            }
            catch (Exception)
            {
                return(0);
            }
        }
        /// <summary>
        /// Método que rechaza una  versión y además actualiza la fecha de la versión por la de ahora.
        /// </summary>
        /// <param name="idVersion"></param>
        /// <returns></returns>
        public int SetRechazarDocumento(int idVersion)
        {
            try
            {
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    TBL_VERSION version = Conexion.TBL_VERSION.Where(x => x.ID_VERSION == idVersion).FirstOrDefault();

                    version.FECHA_VERSION = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

                    version.ID_ESTATUS_VERSION = 4;

                    Conexion.Entry(version).State = EntityState.Modified;

                    return(Conexion.SaveChanges());
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// Método para insertar un registro a la tabla TBL_Version
        /// </summary>
        /// <param name="id_version"></param>
        /// <param name="id_usuario"></param>
        /// <param name="id_documento"></param>
        /// <param name="no_version"></param>
        /// <param name="fecha"></param>
        /// <param name="no_copias"></param>
        /// <returns>Si hay algún error, retorna cero.</returns>
        public int SetVersion(string id_usuario, string id_usuario_autorizo, int id_documento, string no_version, DateTime fecha,
                              int no_copias, int id_estatus, string descripcion, int idClassificationLevel)
        {
            try
            {
                //Se establece conexión a la BD.
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    //Se  crea un objeto de tipo usuarios, el cual se va agregar a la tabla
                    TBL_VERSION obj = new TBL_VERSION();

                    //Se asiganan los valores.
                    obj.ID_USUARIO_ELABORO      = id_usuario;
                    obj.ID_DOCUMENTO            = id_documento;
                    obj.No_VERSION              = no_version;
                    obj.NO_COPIAS               = no_copias;
                    obj.FECHA_VERSION           = fecha;
                    obj.ID_USUARIO_AUTORIZO     = id_usuario_autorizo;
                    obj.ID_ESTATUS_VERSION      = id_estatus;
                    obj.DESCRIPCION             = descripcion;
                    obj.CODE_VALIDATION         = string.Empty;
                    obj.ID_CLASSIFICATION_LEVEL = idClassificationLevel;

                    //Agrega el objeto a la tabla.
                    Conexion.TBL_VERSION.Add(obj);
                    //Se guardan los cambios
                    Conexion.SaveChanges();

                    //Retorna el código del usuario insertado
                    return(obj.ID_VERSION);
                }
            }
            catch (Exception)
            {
                //Si hay error regresa una cadena vacía.
                return(0);
            }
        }
        /// <summary>
        /// Método para eliminar un registro de la tabla.
        /// </summary>
        /// <param name="id_version"></param>
        /// <returns></returns>
        public int DeleteVersion(int id_version)
        {
            try
            {
                // Se inicializa la conexión a la base de datos.
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    //Se obtiene el objeto que se va a eliminar.
                    TBL_VERSION archivo = Conexion.TBL_VERSION.Where(x => x.ID_VERSION == id_version).FirstOrDefault();

                    //Se estable el estado de registro a eliminado.
                    Conexion.Entry(archivo).State = EntityState.Deleted;

                    //Se guardan los cambios y retorna el número de registros afectados.
                    return(Conexion.SaveChanges());
                }
            }
            catch (Exception)
            {
                //Si hay error, se regresa 0.
                return(0);
            }
        }
        /// <summary>
        /// Método para modificar un registro en la tabla TBL_Version.
        /// </summary>
        /// <param name="id_version"></param>
        /// <param name="id_usuario"></param>
        /// <param name="id_documento"></param>
        /// <param name="no_version"></param>
        /// <param name="fecha"></param>
        /// <param name="no_copias"></param>
        /// <returns></returns>
        public int UpdateVersion(int id_version, string id_usuario, string id_usuario_autorizo, int id_documento,
                                 string no_version, DateTime fecha, int no_copias, int id_estatus, string descripcion, int idClassificationLevel)
        {
            try
            {
                //Se establece la conexión a la base de datos.
                using (var Conexion = new EntitiesControlDocumentos())
                {
                    //creación del objeto tipo TBL_archivo.
                    TBL_VERSION obj = Conexion.TBL_VERSION.Where(x => x.ID_VERSION == id_version).FirstOrDefault();

                    //Asignamos los  parámetros recibidos a cada uno de los valores de los objetos.
                    obj.ID_USUARIO_ELABORO      = id_usuario;
                    obj.ID_USUARIO_AUTORIZO     = id_usuario_autorizo;
                    obj.ID_DOCUMENTO            = id_documento;
                    obj.No_VERSION              = no_version;
                    obj.FECHA_VERSION           = fecha;
                    obj.NO_COPIAS               = no_copias;
                    obj.ID_ESTATUS_VERSION      = id_estatus;
                    obj.DESCRIPCION             = descripcion;
                    obj.ID_CLASSIFICATION_LEVEL = idClassificationLevel;
                    //obj.CODE_VALIDATION = string.Empty;

                    //Se cambia el estado de registro a modificado.
                    Conexion.Entry(obj).State = EntityState.Modified;

                    //Se guardan los cambios y se retorna el número de registros afectados.
                    return(Conexion.SaveChanges());
                }
            }
            catch (Exception)
            {
                //Si encuentra error devuelve cero.
                return(0);
            }
        }