Пример #1
0
        /// <summary>
        /// Creates/Load Movie Content Object
        /// </summary>
        /// <param name="db"></param>
        /// <param name="contentModel"></param>
        /// <param name="loadOnly"></param>
        /// <returns></returns>
        private Movie EnsureMovie(MediaManagerDataContext db, ContentModel contentModel, bool loadOnly = false)
        {
            // a remote source has been provided
            if (!string.IsNullOrEmpty(contentModel.RemoteSourceId))
            {
                var mv = db.Movies.FirstOrDefault(a => a.SourceId == contentModel.RemoteSourceId);

                if (mv != null)
                {
                    return mv;
                }

                if (!loadOnly)
                {
                    var movie = new Movie() { SourceId = contentModel.RemoteSourceId, Title = contentModel.Title, SortName = contentModel.SortName };
                    db.Movies.InsertOnSubmit(movie);
                    return movie;
                }
            }
            else
            {
                var mt = db.Movies.FirstOrDefault(a => a.Title == contentModel.Title);

                if (mt != null)
                {
                    return mt;
                }

                if (!loadOnly)
                {
                    var movieT = new Movie() { Title = contentModel.Title, SortName = contentModel.SortName };
                    db.Movies.InsertOnSubmit(movieT);
                    return movieT;
                }
            }
            return null;
        }
Пример #2
0
        /// <summary>
        /// Creates ServerMedia object (assigns content to server) for Movie
        /// </summary>
        /// <param name="db"></param>
        /// <param name="server"></param>
        /// <param name="contentModel"></param>
        /// <param name="movie"></param>
        private void AssignMovieToServer(MediaManagerDataContext db, Server server, ContentModel contentModel, Movie movie)
        {
            // load the libraries for the specific server
            var libraries = db.Libraries.Where(a => a.Server == server).ToList();

            foreach (var file in contentModel.MediaModels)
            {
                // check and see if the files exist, if not then create a new one
                if (!db.ServerMedias.Any(a => a.Server == server && a.MediaId == file.MediaId))
                {
                    var mvs = new ServerMedia()
                    {
                        Server = server,
                        Movie = movie,
                        VideoId = file.VideoId,
                        MediaId = file.MediaId,
                        Resolution = file.Resolution,
                        AspectRatio = file.AspectRatio,
                        FilePath = file.FilePath,
                        DateAdded = file.DateAdded,
                        Size = file.Size,
                        LastCheckin = DateTime.Now,
                        Hash = contentModel.ModelHash,
                        Library = libraries.FirstOrDefault(a => a.Name == contentModel.LibraryName)
                    };

                    db.ServerMedias.InsertOnSubmit(mvs);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Creates/Load Episode Content Object
        /// </summary>
        /// <param name="db"></param>
        /// <param name="contentModel"></param>
        /// <param name="loadShowOnly"></param>
        /// <param name="loadOnly"></param>
        /// <returns></returns>
        private Episode EnsureEpisode(MediaManagerDataContext db, ContentModel contentModel, bool loadShowOnly = false, bool loadOnly = false)
        {
            var show = EnsureShow(db, contentModel.ParentTitle, contentModel.ParentSortTitle, contentModel.ParentRemoteSourceId, loadShowOnly);

            if (show == null) return null;

            var ep = db.Episodes.FirstOrDefault(a => a.Show == show && a.Season == contentModel.Season && a.Episode1 == contentModel.Episode);

            if (ep != null && loadOnly)
            {
                return ep;
            }

            if (!loadOnly)
            {
                ep = new Episode() { Show = show, Season = contentModel.Season, Episode1 = contentModel.Episode, Title = contentModel.Title };
                db.Episodes.InsertOnSubmit(ep);
                return ep;
            }
            return null;
        }
Пример #4
0
        /// <summary>
        /// Creates ServerMedia object (assigns content to server) for Show / Episode
        /// </summary>
        /// <param name="db"></param>
        /// <param name="server"></param>
        /// <param name="contentModel"></param>
        /// <param name="episode"></param>
        private void AssignEpisodeToServer(MediaManagerDataContext db, Server server, ContentModel contentModel, Episode episode)
        {
            var libraries = db.Libraries.Where(a => a.Server == server).ToList();

            foreach (var file in contentModel.MediaModels)
            {
                var sm = db.ServerMedias.FirstOrDefault(a => a.MediaId == file.MediaId);

                // media file does not exist on server, create new meida object
                if (sm == null)
                {
                    var evs = new ServerMedia()
                    {
                        Server = server,
                        Episode = episode,
                        VideoId = file.VideoId,
                        MediaId = file.MediaId,
                        Resolution = file.Resolution,
                        AspectRatio = file.AspectRatio,
                        FilePath = file.FilePath,
                        DateAdded = file.DateAdded,
                        Size = file.Size,
                        LastCheckin = DateTime.Now,
                        Hash = contentModel.ModelHash,
                        Library = libraries.FirstOrDefault(a => a.Name == contentModel.LibraryName)
                    };

                    db.ServerMedias.InsertOnSubmit(evs);
                }
                // update an existing
                else
                {
                    sm.VideoId = file.VideoId;
                    sm.MediaId = file.MediaId;
                    sm.Resolution = file.Resolution;
                    sm.AspectRatio = file.AspectRatio;
                    sm.FilePath = file.FilePath;
                    sm.DateAdded = file.DateAdded;
                    sm.Size = file.Size;
                    sm.LastCheckin = DateTime.Now;
                    sm.Hash = contentModel.ModelHash;
                    sm.Library = libraries.FirstOrDefault(a => a.Name == contentModel.LibraryName);
                }
            }
        }