Example #1
0
        public void FillSuggestions()
        {
            var config = Database.GetCollection<Configurations>(Configurations).FindOne();

            if (!config.NeedUpdate["SuggestionsUpdate"])
                return;

            var programRepository = new ProgramsRepository(ConnectionString, DatabaseName);
            var suggestionsRepository = new SuggestionsRepository(ConnectionString, DatabaseName);

            var programs = programRepository.GetAllPrograms().ToList();

            foreach (var program in programs)
            {
                if (program.SuggestionsAdded)
                    continue;

                foreach (var candidate in programs.Where(candidate => program._id != candidate._id))
                {
                    bool addSuggested;
                    var oneGenre = false;
                    var writers = false;
                    var directors = false;
                    var twoActors = false;

                    if (program.Genres.SequenceEqual(candidate.Genres))
                        addSuggested = true;
                    else
                    {
                        if (program.Genres.Except(candidate.Genres).Count() < program.Genres.Count())
                            oneGenre = true;

                        if (program.Directors.SequenceEqual(candidate.Directors))
                            directors = true;

                        if (program.Writers.SequenceEqual(candidate.Writers))
                            writers = true;

                        if (program.Actors.Except(candidate.Actors).Count() <= program.Actors.Count() - 2)
                            twoActors = true;

                        addSuggested = (oneGenre && writers) || (oneGenre && directors) || (oneGenre && twoActors);
                    }

                    if (addSuggested)
                    {
                        AddSuggestion(suggestionsRepository, program, candidate);
                    }
                }
            }
        }
Example #2
0
        public void FillPeople()
        {
            var config = Database.GetCollection<Configurations>(Configurations).FindOne();

            if (!config.NeedUpdate["PeopleUpdate"])
                return;

            var programRepository = new ProgramsRepository(ConnectionString, DatabaseName);
            var programs = programRepository.GetAllPrograms();

            foreach (var program in programs)
            {
                if (program.PeopleAdded)
                    continue;

                var peopleRepository = new PeopleRepository(ConnectionString, DatabaseName);

                //Log
                Trace.TraceInformation("People: Started Processing Actors...");
                foreach (var actor in program.Actors)
                {
                    AddPerson(peopleRepository, actor, program, "Actor");
                }
                Trace.TraceInformation("People: Finished Processing Actors...");

                Trace.TraceInformation("People: Started Processing Directors...");
                foreach (var director in program.Directors)
                {
                    AddPerson(peopleRepository, director, program, "Director");
                }
                Trace.TraceInformation("People: Started Processing Directors...");

                Trace.TraceInformation("People: Started Processing Writers...");
                foreach (var writer in program.Writers)
                {
                    AddPerson(peopleRepository, writer, program, "Writer");
                }
                Trace.TraceInformation("People: Started Processing Writers...");

                // TODO: REMOVE COMMENT
                //var updatedProgram = (Programs)program.Clone();
                //updatedProgram.PeopleAdded = true;

                //programRepository.UpdateProgram(updatedProgram);
            }

            var updatedConfig = (Configurations) config.Clone();
            updatedConfig.NeedUpdate["PeopleUpdate"] = false;

            var query = Query<Configurations>.EQ(e => e._id, updatedConfig._id);
            var update = Update<Configurations>.Replace(updatedConfig); // update modifiers
            Database.GetCollection<Configurations>(Configurations).Update(query, update);
        }