Exemplo n.º 1
0
        /// <summary>
        /// Método que agrega una marca de agua a los documentos que no son formatos ni ayudas visuales.
        /// </summary>
        /// <param name="version"></param>
        private async Task <bool> SetElectronicStamp(Model.ControlDocumentos.Version version, int idTipoDocumento)
        {
            bool res = false;

            if (idTipoDocumento != 1003 && idTipoDocumento != 1005 && idTipoDocumento != 1006 && idTipoDocumento != 1012 && idTipoDocumento != 1013 && idTipoDocumento != 1014 && idTipoDocumento != 1011)
            {
                BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
                ObservableCollection <Archivo> archivos = DataManagerControlDocumentos.GetArchivos(version.id_version);

                DateTime fecha_sello = DataManagerControlDocumentos.Get_DateTime();

                string dia  = fecha_sello.Day.ToString().Length == 1 ? "0" + fecha_sello.Day : fecha_sello.Day.ToString();
                string anio = fecha_sello.Year.ToString();
                string mes  = fecha_sello.Month.ToString().Length == 1 ? "0" + fecha_sello.Month : fecha_sello.Month.ToString();

                string fecha = dia + "/" + mes + "/" + anio;

                foreach (Archivo item in archivos)
                {
                    string waterMarkText  = "MAHLE CONTROL DE DOCUMENTOS / DOCUMENTO LIBERADO ELECTRÓNICAMENTE Y TIENE VALIDEZ SIN FIRMA." + " DISPOSICIÓN: " + fecha;
                    string waterMarkText2 = "ÚNICAMENTE TIENE VALIDEZ EL DOCUMENTO DISPONIBLE EN INTRANET.";
                    string waterMarkText3 = "LAS COPIAS NO ESTÁN SUJETAS A NINGÚN SERVICIO DE ACTUALIZACIÓN.";

                    byte[] newarchivo = AddWatermark(item.archivo, bfTimes, waterMarkText, waterMarkText2, waterMarkText3, false);

                    item.archivo = newarchivo;

                    int r = DataManagerControlDocumentos.UpdateArchivo(item);

                    res = r == 0 ? false : true;
                }
            }
            return(res);
        }
Exemplo n.º 2
0
        private async Task <bool> iniciarLiberacion(int idVersion, int idSolicitud)
        {
            Documento objDocumento = DataManagerControlDocumentos.GetDocumento(idVersion);

            Model.ControlDocumentos.Version objVersion = new Model.ControlDocumentos.Version();
            objVersion           = DataManagerControlDocumentos.GetVersion(idVersion);
            objDocumento.version = objVersion;

            if (await sellar(idVersion))
            {
                if (liberar(objDocumento, objVersion))
                {
                    if (notificarLiberacion(objDocumento))
                    {
                        //Establecemos que esta solicitud ya fué realizada.
                        DataManagerControlDocumentos.setDoneSolicitudControlDocumentos(idSolicitud);

                        //Eliminamos el registro de la tabla solictudes.
                        DataManagerControlDocumentos.deleteSolicitudControlDocumentos(idSolicitud);

                        Console.WriteLine("Listo Campeón!!, este documento fué liberado exitosamente, Juntos somos Invensibles.");
                        System.Threading.Thread.Sleep(2000);
                        Console.WriteLine("Arriba el Ame!.");
                        Console.WriteLine("Cualquier cosa estoy al pendiente y te aviso ok. Tu sigue durmiendo.");
                    }
                    else
                    {
                        Console.WriteLine("Uuhhh!! valió mauser la notificación por correo.");
                        Console.WriteLine("Pero el documento ya esta liberado, haz paro y notifica de manera manual, y después arreglame para no tener estos pedos.");

                        //Eliminamos el registro de la tabla solictudes.
                        DataManagerControlDocumentos.deleteSolicitudControlDocumentos(idSolicitud);
                        System.Threading.Thread.Sleep(4000);
                        Console.WriteLine("Voy a seguir al pendiente por cualquier cosa que se ofrezca.");
                    }
                }
                else
                {
                    Console.WriteLine("Uta! no pude liberar el documento we, porfa liberalo manualmente ya que!!!");
                    return(false);
                }
            }
            else
            {
                Console.WriteLine("Uta!! no pude sellar el documento, porfa arreglame para poder estar al 100!");
                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Método que agrega una marca de agua a los documentos que no son formatos ni ayudas visuales.
        /// </summary>
        /// <param name="version"></param>
        private bool SetElectronicStamp(Model.ControlDocumentos.Version version)
        {
            bool res = false;

            BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
            ObservableCollection <Archivo> archivos = DataManagerControlDocumentos.GetArchivos(version.id_version, true);

            DateTime fecha_sello = DataManagerControlDocumentos.Get_DateTime();

            string dia  = fecha_sello.Day.ToString().Length == 1 ? "0" + fecha_sello.Day : fecha_sello.Day.ToString();
            string anio = fecha_sello.Year.ToString();
            string mes  = fecha_sello.Month.ToString().Length == 1 ? "0" + fecha_sello.Month : fecha_sello.Month.ToString();

            string fecha = dia + "/" + mes + "/" + anio;

            Documento documento       = DataManagerControlDocumentos.GetDocumento(version.id_version);
            int       contadorArchivo = 0;

            foreach (Archivo item in archivos)
            {
                string waterMarkText  = "MAHLE CONTROL DE DOCUMENTOS / DOCUMENTO LIBERADO ELECTRÓNICAMENTE Y TIENE VELIDEZ SIN FIRMA." + " DISPOSICIÓN: " + fecha;
                string waterMarkText2 = "ÚNICAMENTE TIENE VALIDEZ EL DOCUMENTO DISPONIBLE EN INTRANET.";
                string waterMarkText3 = "LAS COPIAS NO ESTÁN SUJETAS A NINGÚN SERVICIO DE ACTUALIZACIÓN";

                byte[] newarchivo = AddWatermark(item.archivo, bfTimes, waterMarkText, waterMarkText2, waterMarkText3);

                item.archivo = newarchivo;

                item.ruta = saveFileToServer(item, documento.id_tipo_documento, documento.nombre, version.no_version, contadorArchivo);

                int r = DataManagerControlDocumentos.UpdateArchivo(item);

                res = r == 0 ? false : true;
                contadorArchivo++;
            }

            return(res);
        }
Exemplo n.º 4
0
        private async Task <bool> sellar(int idVersion)
        {
            bool respuesta = false;

            Console.WriteLine("Estoy sellando el documento....");

            Model.ControlDocumentos.Version version = DataManagerControlDocumentos.GetVersion(idVersion);
            int idTipoDocumento = DataManagerControlDocumentos.GetTipoDocumentoByIdVersion(idVersion);

            respuesta = await SetElectronicStamp(version, idTipoDocumento);

            System.Threading.Thread.Sleep(3000);

            Console.WriteLine("Mientras lo voy sellando, recuerdo cuando sellabas el documento a mano... que fácil te estoy haciendo la vida.....");
            System.Threading.Thread.Sleep(6000);

            Console.WriteLine("Listo, documento sellado...");
            System.Threading.Thread.Sleep(4000);

            Console.WriteLine("Ahora vamos a lo que sigue.");
            System.Threading.Thread.Sleep(3000);

            return(respuesta);
        }
Exemplo n.º 5
0
        private bool liberar(Documento objDocumento, Model.ControlDocumentos.Version objVersion)
        {
            Console.WriteLine("Deja empiezo a liberar el documento...");
            System.Threading.Thread.Sleep(3000);
            Console.WriteLine("Que tiempos aquellos cuando tenias que registrar uno por uno las liberaciones!!!");
            System.Threading.Thread.Sleep(5000);
            Console.WriteLine("Como ha cambiado el tiempo verdad?, tan fácil que es ahora.");
            System.Threading.Thread.Sleep(4000);

            //Ejecutamos el método para obtener el id de la versión anterior
            int last_version = DataManagerControlDocumentos.GetID_LastVersion(objDocumento.id_documento, objVersion.id_version);

            //si el documento sólo tiene una versión, se modifica el estatus del documento y la versión, se cambia el estatus a liberado.
            if (last_version == 0)
            {
                //Estatus de documento liberado
                objDocumento.id_estatus = 5;

                //Ejecutamos el método para actualizar el estatus del documento.
                int update_documento = DataManagerControlDocumentos.Update_EstatusDocumento(objDocumento);

                if (update_documento != 0)
                {
                    objVersion.id_estatus_version = 1;

                    //Ejecutamos el método para guardar la versión. El resultado lo guardamos en una variable local.
                    int update_version = DataManagerControlDocumentos.UpdateVersion(objVersion, User, objDocumento.nombre);

                    if (update_version != 0)
                    {
                        string file = SaveFile(objDocumento.id_tipo_documento, objDocumento.nombre, objVersion.no_version, objVersion.id_version);

                        if (file == null)
                        {
                            // Llamamos el método para eliminar los registros de la tabla TR_USUARIO_NOTIFICACION_VERSION por ID_VERSION, una vez que el documento sea liberado
                            DataManagerControlDocumentos.EliminarRegistroVersion(objVersion.id_version);
                        }
                        else
                        {
                            Console.WriteLine("Error al copiar el documento al servidor\nidVersion: " + objVersion.id_version);
                            return(false);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Error al actualizar version\nidVersion : " + objVersion.id_version);
                        objDocumento.id_estatus = 2;
                        update_documento        = DataManagerControlDocumentos.Update_EstatusDocumento(objDocumento);
                        return(false);
                    }
                }
                else
                {
                    Console.WriteLine("Error al actualizar el estátus del documento\nidDocumento : " + objDocumento.id_documento);
                    objDocumento.id_estatus = 2;
                    return(false);
                }
            }
            else
            {
                //si el documento tiene más de un versión, sólo se modifica el estatus de la versión a liberado
                //la versión anterior se modifica el estatus a obsoleto.
                int fecha_actualizacion = DataManagerControlDocumentos.UpdateFecha_actualizacion(objDocumento.id_documento);

                objVersion.id_estatus_version = 1;
                objVersion.no_copias          = 0;


                //Ejecutamos el método para modificar el estatus de la versión. El resultado lo guardamos en una variable local.
                int update_version = DataManagerControlDocumentos.UpdateVersion(objVersion, User, objDocumento.nombre);

                if (update_version != 0)
                {
                    //obetemos el id de la versión anterior
                    int last_id = DataManagerControlDocumentos.GetID_LastVersion(objDocumento.id_documento, objVersion.id_version);

                    //Creamos un objeto para la versión anterior
                    Model.ControlDocumentos.Version lastVersion = new Model.ControlDocumentos.Version();

                    //asigamos el id y el estatus obsoleto
                    lastVersion.id_version         = last_id;
                    lastVersion.id_estatus_version = 2;

                    //Se obtienen el número de versión de la version anterior
                    lastVersion.no_version = DataManagerControlDocumentos.GetNum_Version(last_id);

                    //Ejecutamos el método para actualizar el estatus de la versión(liberamos el documento).
                    int update = DataManagerControlDocumentos.Update_EstatusVersion(lastVersion, User, objDocumento.nombre);

                    //si se actualizó correctamente
                    if (update != 0)
                    {
                        string file = SaveFile(objDocumento.id_tipo_documento, objDocumento.nombre, objVersion.no_version, objVersion.id_version);


                        //Si los registros fueron guardados exitosamente el archivo que queda como obsoleto se pasa a la carpeta de respaldo y se elimina de la base de datos
                        _LiberarEspacioBD(last_id);

                        // Llamamos el método para eliminar los registros de la tabla TR_USUARIO_NOTIFICACION_VERSION por ID_VERSION, una vez que el documento sea liberado
                        DataManagerControlDocumentos.EliminarRegistroVersion(objVersion.id_version);
                    }
                    else
                    {
                        Console.WriteLine("Error al copiar el documento al servidor\nidVersion:" + objVersion.id_version);
                        return(false);
                    }
                }
                else
                {
                    Console.WriteLine("Error al actualizar version\nidVersion : " + objVersion.id_version);
                    return(false);
                }
            }

            Console.WriteLine("Listo, el documento ya esta liberado");
            System.Threading.Thread.Sleep(3000);
            Console.WriteLine("Vamos al último paso");
            System.Threading.Thread.Sleep(3000);
            return(true);
        }
Exemplo n.º 6
0
        public void etiquetar()
        {
            List <DO_SolicitudEtiquetado> solicitudes = DataManagerControlDocumentos.GetSolicitudEtiquetar(0);

            Console.WriteLine("Hay " + solicitudes.Count + " Solicitudes pendientes para etiquetar.");

            foreach (var solicitud in solicitudes)
            {
                Console.Beep(5000, 1000);

                List <Archivo> archivos = DataManagerControlDocumentos.GetArchivo(solicitud.IdVersion);
                BaseFont       bfTimes  = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false);

                DO_ClassificationLevel classificationLevel = DataManagerControlDocumentos.GetClassificationLevel(solicitud.IdClasificationLevel);

                foreach (var archivo in archivos)
                {
                    int noCopias = DataManagerControlDocumentos.GetCopias(solicitud.IdVersion);

                    DO_Respuesta respuesta         = setCLJES(archivo.archivo, bfTimes, classificationLevel.ClassificationLevel, noCopias);
                    byte[]       archivoEtiquetado = respuesta.Archivo;

                    if (respuesta.idRespuesta == 1)
                    {
                        File.WriteAllBytes(archivo.ruta, archivoEtiquetado);

                        DataManagerControlDocumentos.UpdateVersion(solicitud.IdVersion, solicitud.IdClasificationLevel, solicitud.IdUsuario);

                        DataManagerControlDocumentos.UpdateSolicitudEtiquetar(solicitud.IdSolicitud, 1);

                        DataManagerControlDocumentos.UpdateNoCopias(solicitud.IdVersion, 0);

                        Documento objDocumento = DataManagerControlDocumentos.GetDocumento(solicitud.IdVersion);

                        Version version = DataManagerControlDocumentos.GetVersion(solicitud.IdVersion);
                        String  title   = "Control de documentos - Etiquetado de documento : " + objDocumento.nombre;
                        string  correoUsuarioElaboro = DataManager.GetUsuario(solicitud.IdUsuario).Correo;

                        ServiceEmail SO_Email = new ServiceEmail();

                        string[] correos = new string[2];
                        correos[0] = correoUsuarioElaboro;
                        correos[1] = "*****@*****.**";
                        string body;
                        body  = "<HTML>";
                        body += "<head>";
                        body += "<meta http-equiv=\"Content - Type\" content=\"text / html; charset = utf - 8\"/>";
                        body += "</head>";
                        body += "<body text=\"white\">";
                        body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">" + definirSaludo() + "</font> </p>";
                        body += "<ul>";
                        body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Para notificar que la JES con el número <b> " + objDocumento.nombre + "</b> versión <b> " + version.no_version + ".0" + " </b> fué etiquetada con la clasificación de seguridad: <b>" + classificationLevel.ClassificationLevel + " </b></font> </li>";
                        body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Adicionalmente informo que el documento a partir de este momento pasa a su nombre y queda actualizado en sistema.</font></li>";
                        body += "<br/>";
                        body += "</ul>";
                        body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">Cualquier duda quedo a sus órdenes</font> </p>";
                        body += "<br/>";
                        body += "<br/>";
                        body += "<p><font font=\"default Sans Serif\" size=\"3\" color=\"black\">Saludos / Kind regards</font> </p>";
                        body += "</body>";
                        body += "</HTML>";

                        //Ejecutamos el método para notificar por correo
                        bool respuestaCorreo = SO_Email.SendEmailLotusCustom(correos, title, body, "CONTROL_DOCUMENTOS_ETIQUETADO", 0);
                        if (respuestaCorreo)
                        {
                            Console.WriteLine("El correo se envió perron!!");
                        }
                        else
                        {
                            Console.WriteLine("Hubo un error al enviar el correo");
                        }
                        //bool respuesta = SO_Email.SendEmailOutlook(correos, title, body, new List<string>());


                        Console.WriteLine("Se etiqueto la versión " + solicitud.IdVersion);
                    }
                    else
                    {
                        //TODO: No se pudo etiquetar tu documento.
                        Console.WriteLine("No se pudo etiquetar el documento " + solicitud.IdVersion);

                        DataManagerControlDocumentos.UpdateSolicitudEtiquetar(solicitud.IdSolicitud, 1);

                        string correoUsuarioElaboro = DataManager.GetUsuario(solicitud.IdUsuario).Correo;

                        Documento objDocumento = DataManagerControlDocumentos.GetDocumento(solicitud.IdVersion);
                        Version   version      = DataManagerControlDocumentos.GetVersion(solicitud.IdVersion);

                        ServiceEmail SO_Email = new ServiceEmail();

                        string[] correos = new string[2];
                        correos[0] = correoUsuarioElaboro;
                        correos[1] = "*****@*****.**";
                        string body;
                        body  = "<HTML>";
                        body += "<head>";
                        body += "<meta http-equiv=\"Content - Type\" content=\"text / html; charset = utf - 8\"/>";
                        body += "</head>";
                        body += "<body text=\"white\">";
                        body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">" + definirSaludo() + "</font> </p>";
                        body += "<ul>";
                        body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Para notificar que la JES con el número <b> " + objDocumento.nombre + "</b> versión <b> " + version.no_version + ".0" + " </b>  <b>NO</b> fué etiquetada con la clasificación de seguridad: <b>" + classificationLevel.ClassificationLevel + " </b></font> </li>";
                        body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Para mas información favor de contactar al administrador de Control de documentos</font></li>";
                        body += "<br/>";
                        body += "</ul>";
                        body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">Cualquier duda quedo a sus órdenes</font> </p>";
                        body += "<br/>";
                        body += "<br/>";
                        body += "<p><font font=\"default Sans Serif\" size=\"3\" color=\"black\">Saludos / Kind regards</font> </p>";
                        body += "</body>";
                        body += "</HTML>";
                        String title           = "Control de documentos - Solicitud no dispobible : " + objDocumento.nombre;
                        bool   respuestaCorreo = SO_Email.SendEmailLotusCustom(correos, title, body, "CONTROL_DOCUMENTOS_ETIQUETADO", 0);

                        if (respuestaCorreo)
                        {
                            Console.WriteLine("El correo se envió perron!!");
                        }
                        else
                        {
                            Console.WriteLine("Hubo un error al enviar el correo");
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Método que cambia el estatus aprobado o pendiente por liberar
        /// Si el documento sólo tiene una versión cambia el estatus de documento y versión
        /// De lo contrario cambia estatus de versión
        /// </summary>
        private async void guardarEstatus()
        {
            //isSelected es false, id_estatus=pendiente por corregir, verdadero estatus= aprobado pendiente por liberar
            bool   Confirmacion = false;
            bool   Aprobado     = false;
            string version      = SelectedDocumento.version.no_version;

            Model.ControlDocumentos.Version objVersion = new Model.ControlDocumentos.Version();
            objVersion.id_version = SelectedDocumento.version.id_version;
            //objVersion.no_version = SelectedDocumento.version.no_version;
            objVersion = DataManagerControlDocumentos.GetVersion(selectedDocumento.version.id_version);
            int last_id = DataManagerControlDocumentos.GetID_LastVersion(SelectedDocumento.id_documento, SelectedDocumento.version.id_version);

            if (selectedDocumento.id_tipo_documento == 1003 || selectedDocumento.id_tipo_documento == 1005 || selectedDocumento.id_tipo_documento == 1006 || selectedDocumento.id_tipo_documento == 1011 || selectedDocumento.id_tipo_documento == 1012 || selectedDocumento.id_tipo_documento == 1013 || selectedDocumento.id_tipo_documento == 1014)
            {
                Confirmacion = true;
            }

            // Si el checkbox es verdadero
            if (isSelected == true)
            {
                Aprobado = true;
                //Si el documento no tiene otra versión
                if (last_id == 0)
                {
                    //Actualiza el estatus de la versión y del documento a pendiente por liberar
                    selectedDocumento.id_estatus  = 4;
                    objVersion.id_estatus_version = 5;

                    //Se llama al método para actualizar el estatus del documento
                    int n = DataManagerControlDocumentos.Update_EstatusDocumento(SelectedDocumento);

                    //si se realizo la actualizacion
                    if (n != 0)
                    {
                        //update version
                        UpdateVersion(objVersion, Confirmacion, Aprobado);

                        //Save document in temporal path "por_aprobar"
                        SaveFile();

                        //ObservableCollection<Archivo> archivosTem = DataManagerControlDocumentos.GetArchivos(selectedDocumento.version.id_version);
                        //string[] files = new string[archivosTem.Count];
                        //int c = 0;
                        //foreach (var item2 in archivosTem)
                        //{
                        //    string pathTemp = GetPathTempFile(item2);
                        //    File.WriteAllBytes(pathTemp, item2.archivo);
                        //    files[c] = pathTemp;
                        //    c++;
                        //}

                        bool confirmacionEnviarCorreo = enviarCorreoAprobarRechazar(SelectedDocumento.nombre, objVersion.no_version, objVersion.id_version, objVersion.id_usuario_autorizo, objVersion.id_usuario);
                    }
                    else
                    {
                        //Se muestra que hubo un error al actualizar el documento
                        await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgEstatusDocumento);
                    }
                }
                else
                {
                    //si es un documento con versión anterior liberada.
                    objVersion.id_estatus_version = 5;

                    //Se llama a la función para actualizar el estatus de la versión
                    UpdateVersion(objVersion, Confirmacion, Aprobado);

                    SaveFile();

                    //ObservableCollection<Archivo> archivosTem = DataManagerControlDocumentos.GetArchivos(selectedDocumento.version.id_version);
                    //string[] files = new string[archivosTem.Count];
                    //int c = 0;
                    //foreach (var item2 in archivosTem)
                    //{
                    //    string pathTemp = GetPathTempFile(item2);
                    //    File.WriteAllBytes(pathTemp, item2.archivo);
                    //    files[c] = pathTemp;
                    //    c++;
                    //}

                    bool confirmacionEnviarCorreo = enviarCorreoAprobarRechazar(SelectedDocumento.nombre, objVersion.no_version, objVersion.id_version, objVersion.id_usuario_autorizo, objVersion.id_usuario);
                }
            }
            else // Aquí se va cuando el documento es incorrecto
            {
                // Validación para que se seleccione al menos un tipo de error o no pida tipo de error cuando es un documento PDF
                if (ListaNotificacionError.Where(x => x.IsSelected).ToList().Count > 0 || visible == "Hidden")
                {
                    // Se copian los errores seleccionados a la lista
                    foreach (var item in ListaNotificacionError)
                    {
                        if (item.IsSelected == true)
                        {
                            ListaErroresSeleccionados.Add(item);
                        }
                    }
                    //Si el documento no tiene una versión anterior liberada
                    if (last_id == 0)
                    {
                        //Actualiza el estatus de la versión y del documento a pendiente por corregir
                        selectedDocumento.id_estatus  = 3;
                        objVersion.id_estatus_version = 4;

                        //Se llama al método para actualizar el estatus del documento
                        int n = DataManagerControlDocumentos.Update_EstatusDocumento(SelectedDocumento);

                        //si se realizo la actualizacion
                        if (n != 0)
                        {
                            //Se llama a la función para actualizar el estatus de la versión
                            UpdateVersion(objVersion, Confirmacion, Aprobado);
                        }
                        else
                        {
                            //Se muestra que hubo un error al actualizar el documento
                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgEstatusDocumento);
                        }
                    }
                    else
                    {
                        //si es un documento con versión una versión anterior liberada .
                        //Estatus pendiente por corregir.
                        objVersion.id_estatus_version = 4;
                        //Se llama a la función para actualizar el estatus de la versión
                        UpdateVersion(objVersion, Confirmacion, Aprobado);
                    }
                }
                else
                {
                    //Mensaje de no selecciono ninguno.
                    //Se muestra un mensaje de que no ha seleccionado ningun tipo de error.
                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgSelecciona1error);
                }
            }
        }
        /// <summary>
        /// Función que modifica la versión
        /// </summary>
        /// <param name="objVersion"></param>
        public async void UpdateVersion(Model.ControlDocumentos.Version objVersion, bool Confirmar, bool Aprobado)
        {
            //Se llama al método para actualizar el estatus de la version
            int update_version = DataManagerControlDocumentos.Update_EstatusVersion(objVersion, _usuarioLogueado, SelectedDocumento.nombre);

            if (update_version != 0)
            {
                string msgConfirmacion = string.Empty;
                if (Confirmar == true)
                {
                    string confirmacion = string.Empty;
                    if (Aprobado == true)
                    {
                        if (NotificarDocumentoAprobado())
                        {
                            confirmacion = StringResources.msgNotificacionCorreo + "\n" + "ESTATUS DE LA VERSION ACTUALIZADA";
                        }
                        else
                        {
                            confirmacion = StringResources.msgNotificacionCorreoFallida + "\n" + "ESTATUS DE LA VERSION ACTUALIZADA";
                        }
                    }
                    else
                    {
                        if (NotificarDocumentoRechazado())
                        {
                            confirmacion = StringResources.msgNotificacionCorreo + "\n" + "ESTATUS DE LA VERSION ACTUALIZADA";
                        }
                        else
                        {
                            confirmacion = StringResources.msgNotificacionCorreoFallida + "\n" + "ESTATUS DE LA VERSION ACTUALIZADA";
                        }
                    }
                    await dialog.SendMessage(StringResources.ttlAlerta, confirmacion);
                }
                else
                {
                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgEstatusVersionActualizada);
                }

                //Obtenemos la pantalla actual, y casteamos para que se tome como tipo MetroWindow.
                var window = Application.Current.Windows.OfType <MetroWindow>().LastOrDefault();

                if (IsSelected)
                {
                    DO_Notification notificacion = new DO_Notification();
                    notificacion.TITLE               = StringResources.ttlDocumentoAprobado;
                    notificacion.MSG                 = StringResources.msgDocumento + " " + SelectedDocumento.nombre + "\n" + StringResources.lblVersion + " " + selectedDocumento.version.no_version + "\n" + StringResources.ttlEntregarDocumento;
                    notificacion.TYPE_NOTIFICATION   = 1;
                    notificacion.ID_USUARIO_RECEIVER = Usuario.id_usuario;
                    notificacion.ID_USUARIO_SEND     = "ADMINISTRADOR";

                    DataManagerControlDocumentos.insertNotificacion(notificacion);
                }
                else
                {
                    DO_Notification notificacion = new DO_Notification();
                    notificacion.TITLE               = StringResources.ttlDocumentoRechazado;
                    notificacion.MSG                 = StringResources.msgDocumento + " " + SelectedDocumento.nombre + "\n" + StringResources.lblVersion + " " + selectedDocumento.version.no_version + "\n" + StringResources.ttlRechazarDocumento;
                    notificacion.TYPE_NOTIFICATION   = 3;
                    notificacion.ID_USUARIO_RECEIVER = Usuario.id_usuario;
                    notificacion.ID_USUARIO_SEND     = "ADMINISTRADOR";

                    DataManagerControlDocumentos.insertNotificacion(notificacion);
                }

                //Verificamos que la pantalla sea diferente de nulo.
                if (window != null)
                {
                    //Cerramos la pantalla
                    window.Close();
                }
            }
            else
            {
                if (selectedDocumento.id_tipo_documento != 1003 || selectedDocumento.id_tipo_documento != 1005 || selectedDocumento.id_tipo_documento != 1006 || selectedDocumento.id_tipo_documento != 1011 || selectedDocumento.id_tipo_documento != 1012 || selectedDocumento.id_tipo_documento != 1013 || selectedDocumento.id_tipo_documento != 1014)
                {
                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgEstatusVersion);
                }
            }
        }
        private async void liberarDocumento(Documento documento)
        {
            DialogService dialog = new DialogService();

            //Declaramos un objeto de tipo MetroDialogSettings al cual le asignamos las propiedades que contendra el mensaje modal.
            MetroDialogSettings setting = new MetroDialogSettings();

            setting.AffirmativeButtonText = StringResources.lblYes;
            setting.NegativeButtonText    = StringResources.lblNo;

            //Ejecutamos el método para mostrar el mensaje. El resultado lo asignamos a una variable local.
            MessageDialogResult result = await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgLiberarDocumento, setting, MessageDialogStyle.AffirmativeAndNegative);

            if (result == MessageDialogResult.Affirmative)
            {
                int numeroCopias = 0;
                //Ejecutamos el método para obtener el id de la versión anterior
                int last_version = DataManagerControlDocumentos.GetID_LastVersion(documento.id_documento, documento.version.id_version);

                //si el documento sólo tiene una versión, se modifica el estatus del documento y la versión, se cambia el estatus a liberado
                if (last_version == 0)
                {
                    //Establacemos el estatus de documento el cual es LIBERADO.
                    documento.id_estatus = 5;

                    //Ejecutamos el método para actualizar el estatus del documento.
                    int update_documento = DataManagerControlDocumentos.Update_EstatusDocumento(documento);

                    //Si se actualizó correctamente.
                    if (update_documento != 0)
                    {
                        documento.version.id_estatus_version = 1;
                        documento.version.no_copias          = numeroCopias;

                        //Ejecutamos el método para guardar la versión. El resultado lo guardamos en una variable local.
                        int update_version = DataManagerControlDocumentos.UpdateVersion(documento.version, User, documento.nombre, documento.version.ClassificationLevel.IdClassificationLevel);

                        //Si la versión se actualizó correctamente.
                        if (update_version != 0)
                        {
                            //Insertamos el sello electrónico a los archivos que apliquen.
                            bool res = SetElectronicStamp(documento.version);

                            string confirmacionCorreo = string.Empty;

                            if (NotificarDocumentoDisponibleConSello(documento))
                            {
                                confirmacionCorreo = StringResources.msgNotificacionCorreo;
                            }
                            else
                            {
                                confirmacionCorreo = StringResources.msgNotificacionCorreoFallida;
                            }

                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgMatrizActualizada + "\n" + confirmacionCorreo);
                        }
                        else
                        {
                            //Mensaje de no se pudo actualizar la tabla TBL_VERSION
                            documento.id_estatus = 2;
                            update_documento     = DataManagerControlDocumentos.Update_EstatusDocumento(documento);
                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgEstatusVersionDocumento);
                        }
                    }
                    else
                    {
                        //Mensaje de no se pudo actualizar la tabla TBL_DOCUMENTO
                        await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgEstatusDocumento);
                    }
                    // Actualizar lista de documentos pendientes por liberara cuando selecciona si
                    inicampo(string.Empty);
                }
                else
                {
                    //si el documento tiene más de un versión, sólo se modifica el estatus de la versión a liberado
                    //la versión anterior se modifica el estatus a obsoleto
                    int fecha_actualizacion = DataManagerControlDocumentos.UpdateFecha_actualizacion(documento.id_documento);

                    documento.version.id_estatus_version = 1;
                    documento.version.no_copias          = numeroCopias;

                    //Ejecutamos el método para modificar el estatus de la versión. El resultado lo guardamos en una variable local.
                    int update_version = DataManagerControlDocumentos.UpdateVersion(documento.version, User, documento.nombre, documento.version.ClassificationLevel.IdClassificationLevel);

                    if (update_version != 0)
                    {
                        //Insertamos el sello electrónico a los archivos que apliquen.
                        bool rest = SetElectronicStamp(documento.version);

                        //obetemos el id de la versión anterior
                        int last_id = DataManagerControlDocumentos.GetID_LastVersion(documento.id_documento, documento.version.id_version);

                        //Creamos un objeto para la versión anterior
                        Model.ControlDocumentos.Version lastVersion = new Model.ControlDocumentos.Version();

                        //asigamos el id y el estatus obsoleto
                        lastVersion.id_version         = last_id;
                        lastVersion.id_estatus_version = 2;

                        //Se obtienen el número de versión de la version anterior
                        lastVersion.no_version = DataManagerControlDocumentos.GetNum_Version(last_id);

                        //Ejecutamos el método para actualizar el estatus de la versión(liberamos el documento).
                        int update = DataManagerControlDocumentos.Update_EstatusVersion(lastVersion, User, documento.nombre);

                        if (update != 0)
                        {
                            _LiberarEspacioBD(last_id);
                            string confirmacionCorreo = string.Empty;

                            if (NotificarDocumentoDisponibleConSello(documento))
                            {
                                confirmacionCorreo = StringResources.msgNotificacionCorreo;
                            }
                            else
                            {
                                confirmacionCorreo = StringResources.msgNotificacionCorreoFallida;
                            }

                            await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgMatrizActualizada + "\n" + confirmacionCorreo);
                        }
                    }
                    else
                    {
                        //Mensaje de no se pudo actualizar TBL_VERSION
                        //Si hubo error al actualizar la última versión
                        await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgErrorActualizarVersion);
                    }
                }
                // Se actualiza lista de documentos a liberar cuando la version es diferente a 1
                inicampo(string.Empty);
            }
            else
            {
                // Vuelve a cargar la lista cuando no se quiere liberar documento
                inicampo(string.Empty);
            }
        }