/**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);
                }
            }
        }
예제 #2
0
        /**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); */
                }
            }
        }