示例#1
0
        private void getMovieInfoByIdAndSave(string imdbId, MovieDO movie, TextWriter tw, DateTime start)
        {
            ImdbModel imdbInfo = new ImdbModel( );

            try {
                imdbInfo = ImdbHelper.getMovieInformation(imdbId, tw, start);

                logHelper.logLine(tw, "Imdb information parsed successfully. Starting operation 'Basic Info'");

                #region Basic Info (not updated in db yet)
                if (string.IsNullOrEmpty(movie.ImdbID))
                {
                    movie.ImdbID = imdbId;
                }
                if (string.IsNullOrEmpty(movie.ImdbPoster) && !string.IsNullOrEmpty(imdbInfo.picturePath))
                {
                    string savePath = getSavePath( );
                    string fileName = FileSystemHelper.prepareFileNameForPicture(imdbInfo.picturePath.Substring(imdbInfo.picturePath.LastIndexOf('/')), new MovieNameModel {
                        OriginalName = movie.OriginalName
                    }, savePath);
                    WebRequestHelper.Download(imdbInfo.picturePath, savePath + fileName);
                    movie.ImdbPoster = fileName;
                }

                movie.ImdbRating = imdbInfo.imdbRating;
                if (movie.Year == null || movie.Year == 0)
                {
                    movie.Year = imdbInfo.year;
                }
                #endregion Basic Info

                logHelper.logLine(tw, "Basic Info inserted");

                logHelper.logLine(tw, "Starting operation 'Genres'");

                #region types
                if (MovieTypeBL.GetAllByMovieID(movie.ID).Count() < 1)
                {
                    try {
                        if (imdbInfo.genres != null)
                        {
                            foreach (string item in imdbInfo.genres)
                            {
                                if (allTypes.ContainsKey(item))
                                {
                                    MovieTypeBL.Save(new MovieTypeDO( )
                                    {
                                        MovieID = movie.ID, TypeID = allTypes[item]
                                    }, 1);
                                }
                                else
                                {
                                    int currentID = TypeBL.Save(new MArchive.Domain.Lookup.TypeDO( )
                                    {
                                        Name = item
                                    }, 1).ID;
                                    //MovieTypeBL.Save( movie.ID, item, 1 );
                                    MovieTypeBL.Save(new MovieTypeDO( )
                                    {
                                        MovieID = movie.ID, TypeID = currentID
                                    }, 1);
                                    allTypes.Add(item, currentID);
                                }
                            }
                        }
                        logHelper.logLine(tw, "Genres inserted");
                    } catch (Exception ex) {
                        logHelper.logLine(tw, "Genres could not be inserted.");
                        logHelper.logException(tw, ex);
                        logHelper.logLine(tw);
                    }
                }
                #endregion types

                logHelper.logLine(tw, "Starting operation 'Actors'");

                #region actors
                if (MovieActorBL.GetAllByMovieID(movie.ID).Count( ) < 1)
                {
                    try {
                        if (imdbInfo.cast != null)
                        {
                            foreach (string item in imdbInfo.cast)
                            {
                                if (allActors.ContainsKey(item))
                                {
                                    MovieActorBL.Save(new MovieActorDO( )
                                    {
                                        MovieID = movie.ID, ActorID = allActors[item]
                                    }, 1);
                                }
                                else
                                {
                                    int currentID = ActorBL.Save(new MArchive.Domain.Lookup.ActorDO( )
                                    {
                                        Name = item
                                    }, 1).ID;
                                    MovieActorBL.Save(new MovieActorDO( )
                                    {
                                        MovieID = movie.ID, ActorID = currentID
                                    }, 1);
                                    allActors.Add(item, currentID);
                                }
                            }
                        }
                        logHelper.logLine(tw, "Actors inserted");
                    } catch (Exception ex) {
                        logHelper.logLine(tw, "Actors could not be inserted.");
                        logHelper.logException(tw, ex);
                        logHelper.logLine(tw);
                    }
                }
                #endregion actors

                logHelper.logLine(tw, "Starting operation 'Languages'");

                #region languages
                if (MovieLanguageBL.GetAllByMovieID(movie.ID).Count( ) < 1)
                {
                    try {
                        if (imdbInfo.languages != null)
                        {
                            foreach (string item in imdbInfo.languages)
                            {
                                if (allLanguages.ContainsKey(item))
                                {
                                    MovieLanguageBL.Save(new MovieLanguageDO( )
                                    {
                                        MovieID = movie.ID, LanguageID = allLanguages[item]
                                    }, 1);
                                }
                                else
                                {
                                    int currentID = LanguageBL.Save(new MArchive.Domain.Lookup.LanguageDO( )
                                    {
                                        Name = item
                                    }, 1).ID;
                                    MovieLanguageBL.Save(new MovieLanguageDO( )
                                    {
                                        MovieID = movie.ID, LanguageID = currentID
                                    }, 1);
                                    allLanguages.Add(item, currentID);
                                }
                            }
                        }
                        logHelper.logLine(tw, "Languages inserted");
                    } catch (Exception ex) {
                        logHelper.logLine(tw, "Languages could not be inserted.");
                        logHelper.logException(tw, ex);
                        logHelper.logLine(tw);
                    }
                }
                #endregion languages

                logHelper.logLine(tw, "Starting operation 'Directors'");

                #region directors
                if (MovieDirectorBL.GetAllByMovieID(movie.ID).Count( ) < 1)
                {
                    try {
                        if (imdbInfo.directors != null)
                        {
                            foreach (string item in imdbInfo.directors)
                            {
                                if (allDirectors.ContainsKey(item))
                                {
                                    MovieDirectorBL.Save(new MovieDirectorDO( )
                                    {
                                        MovieID = movie.ID, DirectorID = allDirectors[item]
                                    }, 1);
                                }
                                else
                                {
                                    int currentID = DirectorBL.Save(new MArchive.Domain.Lookup.DirectorDO( )
                                    {
                                        Name = item
                                    }, 1).ID;
                                    MovieDirectorBL.Save(new MovieDirectorDO( )
                                    {
                                        MovieID = movie.ID, DirectorID = currentID
                                    }, 1);
                                    allDirectors.Add(item, currentID);
                                }
                            }
                        }
                        logHelper.logLine(tw, "Directors inserted");
                    } catch (Exception ex) {
                        logHelper.logLine(tw, "Directors could not be inserted.");
                        logHelper.logException(tw, ex);
                        logHelper.logLine(tw);
                    }
                }
                #endregion directors

                logHelper.logLine(tw, "Starting operation 'Writers'");

                #region writers
                if (MovieWriterBL.GetAllByMovieID(movie.ID).Count( ) < 1)
                {
                    try {
                        if (imdbInfo.writers != null)
                        {
                            foreach (string item in imdbInfo.writers)
                            {
                                if (allWriters.ContainsKey(item))
                                {
                                    MovieWriterBL.Save(new MovieWriterDO( )
                                    {
                                        MovieID = movie.ID, WriterID = allWriters[item]
                                    }, 1);
                                }
                                else
                                {
                                    int currentID = WriterBL.Save(new MArchive.Domain.Lookup.WriterDO( )
                                    {
                                        Name = item
                                    }, 1).ID;
                                    MovieWriterBL.Save(new MovieWriterDO( )
                                    {
                                        MovieID = movie.ID, WriterID = currentID
                                    }, 1);
                                    allWriters.Add(item, currentID);
                                }
                            }
                        }
                        logHelper.logLine(tw, "Writers inserted");
                    } catch (Exception ex) {
                        logHelper.logLine(tw, "Writers could not be inserted.");
                        logHelper.logException(tw, ex);
                        logHelper.logLine(tw);
                    }
                }
                #endregion writers

                logHelper.logLine(tw, "Updating 'movie' table");

                movie.ImdbParsed        = true;
                movie.ImdbLastParseDate = movie.UpdateDate = DateTime.Now;

                MovieBL.Save(movie, 1);

                logHelper.logLine(tw, "Table update successful");
            } catch (Exception ex) { logHelper.logException(tw, ex); }
        }
示例#2
0
        public List <MovieDO> DoFilter(List <MovieDO> movieList, int userID)
        {
            //filter names
            if (string.IsNullOrEmpty(Name.FilterValue) == false)
            {
                var tempList = MovieListBL.SearchSuperblyForNames(Name.FilterValue).Select(q => q.ID);
                movieList = movieList.Where(q => tempList.Contains(q.ID)).ToList();
            }

            //filter year
            if (string.IsNullOrEmpty(Year.FilterValue) == false)
            {
                int year = ParseHelper.ToInt32(Year.FilterValue);
                if (year > 0)
                {
                    if (Year.FilterType == FilterTypes.Equals)
                    {
                        movieList = movieList.Where(q => q.Year.HasValue && q.Year.Value == year).ToList();
                    }
                    if (Year.FilterType == FilterTypes.GreaterThanOrEqual)
                    {
                        movieList = movieList.Where(q => q.Year.HasValue && q.Year.Value >= year).ToList();
                    }
                    if (Year.FilterType == FilterTypes.LessThanOrEqual)
                    {
                        movieList = movieList.Where(q => q.Year.HasValue && q.Year.Value <= year).ToList();
                    }
                }
            }

            //filter imdb rating
            if (string.IsNullOrEmpty(ImdbRating.FilterValue) == false)
            {
                double imdbRating = ParseHelper.ToDouble(ImdbRating.FilterValue);
                if (imdbRating > 0)
                {
                    if (ImdbRating.FilterType == FilterTypes.Equals)
                    {
                        movieList = movieList.Where(q => q.ImdbRating.HasValue && q.ImdbRating.Value == imdbRating).ToList();
                    }
                    if (ImdbRating.FilterType == FilterTypes.GreaterThanOrEqual)
                    {
                        movieList = movieList.Where(q => q.ImdbRating.HasValue && q.ImdbRating.Value >= imdbRating).ToList();
                    }
                    if (ImdbRating.FilterType == FilterTypes.LessThanOrEqual)
                    {
                        movieList = movieList.Where(q => q.ImdbRating.HasValue && q.ImdbRating.Value <= imdbRating).ToList();
                    }
                }
            }

            //filter i have watched
            if (string.IsNullOrEmpty(IHaveWatched.FilterValue) == false)
            {
                string watchedStatus = IHaveWatched.FilterValue;

                if (watchedStatus != "All")
                {
                    List <MovieUserRatingDO> usersRatings = MovieUserRatingBL.GetAllDOByUserID(userID);
                    List <int> movieIds = usersRatings.Where(q => q.Watched == true).Select(q => q.MovieID).ToList();
                    if (watchedStatus == "No")
                    {
                        movieList.RemoveAll(q => movieIds.Contains(q.ID));
                    }
                    else if (watchedStatus == "Yes")
                    {
                        movieList = movieList.Where(q => movieIds.Contains(q.ID)).ToList();
                    }
                }
            }

            //filter my rating
            if (string.IsNullOrEmpty(MyRating.FilterValue) == false)
            {
                double myRating = ParseHelper.ToDouble(MyRating.FilterValue);
                if (myRating > 0)
                {
                    List <int> movieIdsForUsersRatings = new List <int>();
                    if (MyRating.FilterType == FilterTypes.Equals)
                    {
                        movieIdsForUsersRatings = MovieUserRatingBL.GetAllDOByUserID(userID).Where(q => q.Rating == myRating).Select(q => q.MovieID).ToList();
                    }
                    if (MyRating.FilterType == FilterTypes.GreaterThanOrEqual)
                    {
                        movieIdsForUsersRatings = MovieUserRatingBL.GetAllDOByUserID(userID).Where(q => q.Rating >= myRating).Select(q => q.MovieID).ToList();
                    }
                    if (MyRating.FilterType == FilterTypes.LessThanOrEqual)
                    {
                        movieIdsForUsersRatings = MovieUserRatingBL.GetAllDOByUserID(userID).Where(q => q.Rating <= myRating).Select(q => q.MovieID).ToList();
                    }

                    movieList = movieList.Where(q => movieIdsForUsersRatings.Contains(q.ID)).ToList();
                }
            }

            //filter movie types
            if (MovieType.Length > 0)
            {
                List <int> typeIds = new List <int>();
                foreach (var item in MovieType)
                {
                    typeIds.Add(ParseHelper.ToInt32(item));
                }

                var allMoviesAndTypes = MovieTypeBL.GetAllDO().Where(q => typeIds.Contains(q.TypeID));
                movieList = movieList.Join(allMoviesAndTypes, mList => mList.ID, allMovs => allMovs.MovieID, (mList, allMovs) => mList).ToList();
            }

            return(movieList);
        }