示例#1
0
        static string getFolderLeccionesAprendidas(Archivo_LeccionesAprendidas archivo)
        {
            string path = @"C:\files_lecciones\" + archivo.ID_LECCIONES_APRENDIDAS;

            if (!File.Exists(path))
            {
                System.IO.Directory.CreateDirectory(path);
                Console.WriteLine("Folder created : " + archivo.ID_LECCIONES_APRENDIDAS);
            }

            path = path + @"\" + archivo.NOMBRE_ARCHIVO + archivo.EXT;

            return(path);
        }
        /// <summary>
        /// Método que genera una cadena para cargar un archivo en la carpeta temporal del sistema
        /// para poder visualizarlo
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private string GetPathTempFile(Archivo_LeccionesAprendidas item)
        {
            //Se guarda la ruta del directorio temporal.
            var    tempFolder = Path.GetTempPath();
            string filename   = string.Empty;

            //Realiza la acción hasta que el archivo se haya abierto
            do
            {
                //Genera un número aleatorio
                string aleatorio = Module.GetRandomString(5);
                //Crea la ruta temporal con el nombre del archivo y el número generado, y la extensión
                filename = Path.Combine(tempFolder, item.NOMBRE_ARCHIVO + aleatorio + item.EXT);
            } while (File.Exists(filename));

            //retornamos el nombre que se generó
            return(filename);
        }
        /// <summary>
        /// Método para eliminar un archivo de  las lecciones aprendidas.
        /// </summary>
        /// <param name="item"></param>
        ///
        private async void eliminarItem(Archivo_LeccionesAprendidas item)
        {
            //Incializamos los servicios de dialog.
            DialogService dialogService = new DialogService();

            if (item != null)
            {
                //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 dialogService.SendMessage(StringResources.ttlAlerta, StringResources.msgDelArchivo, setting, MessageDialogStyle.AffirmativeAndNegative);

                if (item != null & result == MessageDialogResult.Affirmative)
                {
                    //Se elimina el item seleccionado de la listaDocumentos.
                    ListaDocumentos.Remove(item);

                    //Comparamos si el archivo se debe eliminar de la base de datos.
                    if (item.ID_ARCHIVO_LECCIONES != 0 && item.ID_LECCIONES_APRENDIDAS != 0)
                    {
                        //Se elimina de la base de datos.
                        int n = DataManagerControlDocumentos.Delete_Archivo_Lecciones(item.ID_ARCHIVO_LECCIONES);

                        if (n > 0)
                        {
                            await dialogService.SendMessage(StringResources.ttlAlerta, StringResources.msgArchivoEliminadoCorrectamente);
                        }
                        else
                        {
                            await dialogService.SendMessage(StringResources.msgError, StringResources.msgArchivoEliminadoFallido);
                        }
                    }
                    else
                    {
                        await dialogService.SendMessage(StringResources.ttlAlerta, StringResources.msgArchivoEliminadoCorrectamente);
                    }
                }
            }
        }
        /// <summary>
        /// Método para visualizar un archivo seleccionado
        /// </summary>
        /// <param name="item"></param>
        private async void verArchivo(Archivo_LeccionesAprendidas item)
        {
            DialogService dialog = new DialogService();

            if (item != null)
            {
                try
                {
                    //se asigna el nombre del archivo temporal, se concatena el nombre del archivo, la posicion de la lista y la extensión.
                    string filename = GetPathTempFile(item);

                    //Crea un archivo nuevo temporal, escribe en él los bytes extraídos de la BD.
                    File.WriteAllBytes(filename, item.ARCHIVO);
                    //Se inicializa el programa para visualizar el archivo.
                    Process.Start(filename);
                }
                catch (Exception)
                {
                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgErrorAbrir);
                }
            }
        }
        /// <summary>
        /// Método para adjuntar archivos a las lecciones aprendidas
        /// </summary>
        public async void AdjuntarArchivo()
        {
            //Inicializamos los servicios de dialog
            DialogService dialog = new DialogService();

            //Declaramos un objeto de tipo ProgressDialogController, el cual servirá para recibir el resultado el mensaje progress.
            ProgressDialogController AsyncProgress;

            //Inicializamos los servicios de metrodialog
            MetroDialogSettings settings = new MetroDialogSettings();

            //Declaramos las posibles respuestas del metrodialog
            settings.AffirmativeButtonText = StringResources.lblYes;
            settings.NegativeButtonText    = StringResources.lblNo;

            //abrimos la ventana para buscar el archivo a insertar
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

            //obtenemos el archivo seleccionado
            Nullable <bool> result = dlg.ShowDialog();

            //Inicializamos una variable de tipo archivo_lecciones aprendidas que nos ayudara a guardar los datos del archivo a insertar
            Archivo_LeccionesAprendidas Archivo = new Archivo_LeccionesAprendidas();

            //Verificamos que se haya insertado un archivo
            if (result == true)
            {
                try
                {
                    //Obtenemos el nombre del archivo
                    string filename = dlg.FileName;

                    //Verificamos que no se encuentre abierto el archivo,si el archivo no esta entra en la condicion para agregar el archivo
                    if (!Module.IsFileInUse(filename))
                    {
                        //Mandamos un mensaje de espera mientras se inserta el archivo a la lista de documentos
                        AsyncProgress = await dialog.SendProgressAsync(StringResources.msgEspera, StringResources.msgInsertando);

                        //Obtenemos los datos del archivo que vayamos a insertar
                        Archivo.ARCHIVO = await Task.Run(() => File.ReadAllBytes(filename));

                        Archivo.EXT            = System.IO.Path.GetExtension(filename);
                        Archivo.NOMBRE_ARCHIVO = System.IO.Path.GetFileNameWithoutExtension(filename);

                        //dependiendo la extensíon del archivo se agrega la ruta de imagen para visualisarla
                        switch (Archivo.EXT)
                        {
                        case ".doc":
                            Archivo.rutaIcono = @"/Images/w.png";

                            break;

                        case ".docx":
                            Archivo.rutaIcono = @"/Images/w.png";

                            break;

                        case ".pdf":
                            Archivo.rutaIcono = @"/Images/p.png";

                            break;

                        case ".xls":
                            Archivo.rutaIcono = @"/Images/E.jpg";

                            break;

                        case ".xlsx":
                            Archivo.rutaIcono = @"/Images/E.jpg";

                            break;

                        case "ppt":
                            Archivo.rutaIcono = @"/Images/PP.png";

                            break;

                        //todos los archivos que no tengan alguna de las extenciones antes mencionadas entraran aqui y se les pondra una imagen general
                        default:
                            Archivo.rutaIcono = @"/Images/I.png";
                            break;
                        }
                        //Agregamos el archivo a la lista, SOLO SE AGREGA LOCALMENTE, AUN NO LO INSERTAMOS EN LA BASE DE DATOS
                        ListaDocumentos.Add(Archivo);

                        //Cerramos el mensaje de espera
                        await AsyncProgress.CloseAsync();
                    }
                    else
                    {
                        //Si el archivo esta en uso se manda un mensaje para que lo cierre
                        await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgCierreArchivo);
                    }
                }
                catch (Exception)
                {
                    //Si no se pudo cargar el archivo se manda un mensaje de error
                    await dialog.SendMessage(StringResources.ttlAlerta, StringResources.msgError);
                }
            }
        }