/**Guarda las descripciones de un MediaFile en todos sus hijos*/ public void SaveRecursiveMediaFiles(media_files mf) { MediaFilesRepository mediaRepo = DBManager.MediaFilesRepo; List <media_files> mediaList = mediaRepo.FindByCategoria(mf.categoria_id, mf.id, false); if (mediaList.Count > 0) { List <media_generos> mgList; List <media_paises> mpList; foreach (media_files child in mediaList) { mgList = new List <media_generos>(); mpList = new List <media_paises>(); ReadMediaFormDescriptions(child, mgList, mpList); mediaRepo.Update(child, mgList, mpList, false); SaveRecursiveMediaFiles(child); } } }
/**Verifica si el MovieFile tiene hijos y los inserta en el TreeItem*/ public static async void FillMovieChildrens(IconItem nodo, int categId, int mediaPArentId, IIconItemClickHandler _iitemClickHandler, bool foldersOnly) { MediaFilesRepository mediaRepo = DBManager.MediaFilesRepo; // new MediaFilesRepository(); List <media_files> mediaList = await mediaRepo.FindByCategoriaAsync(categId, mediaPArentId, foldersOnly); if (mediaList.Count > 0) { IconItem child; foreach (media_files mf in mediaList) { child = new IconItem(mf.titulo, mf, _iitemClickHandler); nodo.Items.Add(child); if (mf.is_folder) { FillMovieChildrens(child, categId, mf.id, _iitemClickHandler, foldersOnly); } //Verificar si el MF no existe fisicamente lo notifico CheckMF_Exists(mf); } } }
/**Guardar Media File*/ private void BtnGuardar_Click(object sender, RoutedEventArgs e) { AppMAnager.SetWaitCursor(); current_treeItem.setTitle(tbTitulo.Text); current_mf.titulo = tbTitulo.Text; current_mf.file_url = tbFichero.Text; current_mf.str_file = tbSubtitulo.Text; /* current_mf.titulo = tbTitulo.Text; * current_mf.file_url = tbFichero.Text; * current_mf.str_file = tbSubtitulo.Text; * current_mf.fichero_trailer = tbTrailer.Text; * * if (IPortadaPreview.Tag != null && !String.IsNullOrEmpty(IPortadaPreview.Tag.ToString())) * current_mf.fichero_portada = IPortadaPreview.Tag.ToString(); * else * current_mf.fichero_portada = null; * * current_mf.director = tbDirector.Text; * * if(tbAnno.Text.Trim().Length > 0) * current_mf.anno = int.Parse(tbAnno.Text); * * if (tbDuracion.Text.Trim().Length > 0) * current_mf.duracion = int.Parse(tbDuracion.Text); * * current_mf.productora = tbProductora.Text; * current_mf.reparto = tbReparto.Text; * current_mf.sinopsis = tbSinopsis.Text; * current_mf.premios = tbPremios.Text; * * //Generos * media_generos mg; * List<media_generos> mgList = new List<media_generos>(); * foreach (genero g in current_generos_list) * { * mg = new media_generos(g.id, current_mf.id); * mgList.Add(mg); * } * * //Paises * media_paises mp; * List<media_paises> mpList = new List<media_paises>(); * foreach (pais p in current_paises_list) * { * mp = new media_paises(p.id, current_mf.id); * mpList.Add(mp); * }*/ List <media_generos> mgList = new List <media_generos>(); List <media_paises> mpList = new List <media_paises>(); ReadMediaFormDescriptions(current_mf, mgList, mpList); MediaFilesRepository repo = DBManager.MediaFilesRepo; repo.Update(current_mf, mgList, mpList, true); if (chbxSaveRecursive.IsChecked == true) { DbContextTransaction transaction = DBManager.Context.Database.BeginTransaction(); try { SaveRecursiveMediaFiles(current_mf); // AppMAnager.GlobalContentChanged(); transaction.Commit(); } catch (Exception ex) { MessageBoxButton btn = MessageBoxButton.OK; transaction.Rollback(); ModernDialog.ShowMessage("Ocurrió un error al realizar la operación." + "\n" + ex.Message, "Error", btn); } } PHome._PHome.SetContentChanged(); AppMAnager.RestoreCursor(); }
//Lee lo seleccionado en el arbol de categorias escaneado y lo guarda a la bd private void SaveSelectedNodes(List <MediaFile_Basic_Info> List, categoria categ, int parentId, BackgroundWorker worker) { FileInfo fi; DirectoryInfo di; string subtitle; string poster; string trailer; MediaFilesRepository mediaRepo = DBManager.MediaFilesRepo; // new MediaFilesRepository(); int ptoCopia_id = AppMAnager.CurrentPuntoCopia().id; //media_files mf; int progress; foreach (MediaFile_Basic_Info item in List) { if (item._fileSystemInfo is FileInfo) //Es un fichero { fi = (FileInfo)item._fileSystemInfo; Console.WriteLine(fi.DirectoryName + " | " + fi.Name); /*mf = new media_files * { * categoria_id = categ.id, * punto_copia_id = AppMAnager.CurrentPuntoCopia().id, // copia_punto.id, * titulo = AppMAnager.NameWithoutExt(fi.Name), * is_folder = false * };*/ subtitle = AppMAnager.FindSubtitleFile(fi); poster = AppMAnager.FindPosterFile(fi); trailer = AppMAnager.FindTrailerFile(fi); /* * if (poster != null) * mf.fichero_portada = poster; * * mf.parent_id = parentId; * mf.file_url = fi.FullName; * if (subtitle != null) * mf.str_file = subtitle; * * mf = mediaRepo.Add(mf);*/ nextMediaId++; DBManager.Context.Database.ExecuteSqlCommand("insert into media_files(id, categoria_id, punto_copia_id, parent_id, file_url, str_file, fichero_portada, titulo, fichero_trailer, is_folder) " + "values(" + nextMediaId + "," + categ.id + "," + ptoCopia_id + "," + parentId + ",'" + getScapedString(fi.FullName) + "','" + getScapedString(subtitle) + "','" + getScapedString(poster) + "','" + getScapedString(AppMAnager.NameWithoutExt(fi.Name)) + "','" + getScapedString(trailer) + "', false)"); i++; progress = (i * 100) / totalSaveOperations; worker.ReportProgress(progress); } else if (item._fileSystemInfo is DirectoryInfo) //Es un directorio { di = (DirectoryInfo)item._fileSystemInfo; Console.WriteLine("Leyendo directorio: " + di.FullName); if (!item.file_exists) //No existe el directorio { /* mf = new media_files * { * categoria_id = categ.id, * punto_copia_id = AppMAnager.CurrentPuntoCopia().id, * titulo = di.Name, * is_folder = true, * parent_id = parentId, * file_url = di.FullName * }; * mf = mediaRepo.Add(mf);*/ nextMediaId++; DBManager.Context.Database.ExecuteSqlCommand("insert into media_files(id, categoria_id, punto_copia_id, parent_id, file_url, titulo, is_folder) " + "values(" + nextMediaId + "," + categ.id + "," + ptoCopia_id + "," + parentId + ",'" + getScapedString(di.FullName) + "','" + getScapedString(di.Name) + "', true)"); SaveSelectedNodes(item.Childrens, categ, nextMediaId, worker); } /* else * mf = mediaRepo.FindByUrl(di.FullName); * * SaveSelectedNodes(item.Childrens, categ, mf.id, worker); */ } } }