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); } } }