示例#1
0
        static void Main(string[] args)
        {
            BootStrapper.Configure();

            // TODO : Read flags from the command line
            try
            {
                IAchievementRepository achievementRepository = new MongoAchievementRepository();

                // Parse new achievements from www.wowhead.com if the parse achievement flag is set
                if (parseAchivements)
                {
                    // Remove achievements first
                    if (deleteAchievements)
                    {
                        achievementRepository.DeleteAllAchievements();
                    }
                    AchievementListParser achievementParser = new AchievementListParser(achievementRepository);

                    achievementParser.Parse(true);
                    WowHeadAchievementParser parser = new WowHeadAchievementParser(achievementRepository);

                    foreach (Achievement achievement in achievementRepository.FindAll())
                    {
                        parser.CheckForSeriesOfCriteria(achievement, false);
                    }

                    //parser.Parse(true);
                   //return;
                }

                // Get a list of guilds to use
                IList<Guild> guildsToParseSource = GetListOfGuilds(parseGuilds);
                int guildCounter = 1;

                ICharacterService characterService = ObjectFactory.GetInstance<ICharacterService>();
                ICharacterRepository characterRepository = ObjectFactory.GetInstance<ICharacterRepository>();
                IGuildParser guildParser = ObjectFactory.GetInstance<IGuildParser>();

                // Remove all characters to reset achivement rankings
                if (deleteCharacters)
                {
                    characterRepository.DeleteAllCharacters();
                }

                if (rankAchievements)
                {
                    MongoAchievementService service = new MongoAchievementService();
                    service.RankAchievements();
                }

                IList<Guild> guildsToParse = guildsToParseSource;
                if (restrictToKilrogg)
                {
                    guildsToParse = guildsToParseSource.Where(g => string.Compare(g.Server, "Kilrogg", true) == 0).ToList();
                }

                foreach (Guild guild in guildsToParse)
                {

                    IEnumerable<Character> roster = guildParser.ParserRoster("us", guild.Server, guild.Name).OrderByDescending( c=> c.CurrentPoints );

                    Console.WriteLine("{0} of {1} ({2} of {3})", guild.Name, guild.Server, guildCounter, guildsToParse.Count);

                    int counter = 1;
                    foreach (Character character in roster)
                    {
                        if (character.Level < 85)
                        {
                            // Skip low level characters
                            continue;
                        }
                        try
                        {

                            Character existing = characterRepository.FindCharacter(character);
                            if (existing == null || DateTime.Now.Subtract(existing.LastParseDate.Value).Days >= maxDaysOld)
                            {
                                Console.WriteLine("\t{0} [{1} of {2}]",
                                character.Name, counter, roster.Count());
                                characterService.UpdateCharacterDetails(character.Server, character.Name, character.Region);
                            }
                            else
                            {
                                Console.WriteLine("\t{0} [{1} of {2}] SKIPPED",
                                character.Name, counter, roster.Count());
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("\tFAILED Parsing {0} {1}", character.Name, ex);
                        }
                        finally
                        {
                            counter++;
                        }
                    }
                    guildCounter++;
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.ReadLine();
            }
        }
 public void Process()
 {
     MongoAchievementService service = new MongoAchievementService();
     service.RankAchievements();
 }