Example #1
0
        public void ParserTask()
        {
            while (true)
            {
                var task = TasksRepostory.GetNewTask();
                if (task == null)
                {
                    return;
                }
                switch (task.TaskType)
                {
                case TaskTypeEnum.FindMatch:
                    var match = MatchRepostory.GetByWebApiId(task.RequestID);
                    if (match == null)
                    {
                        var onlineMatch = SteamRepostory.GetMatchById(task.RequestID);
                        if (onlineMatch != null)
                        {
                            MatchRepostory.AddWithChilds(onlineMatch);
                        }
                        TasksRepostory.CompleteTask(task);
                        UnitOfWork.Commit();
                        return;
                    }
                    TasksRepostory.CompleteTask(task);
                    UnitOfWork.Commit();
                    break;

                case TaskTypeEnum.FindMatchList:
                    var data           = SteamRepostory.GetMatches(playerID: task.RequestID, matchID: task.RequestFrom, heroID: task.HeroID, matchCount: task.Count);
                    var matchRemaining = task.Count - (data.Result.TotalResults - data.Result.ResultsRemaining);
                    if (matchRemaining > 0)
                    {
                        if (data.Result.Matches != null && data.Result.Matches.Count > 0)
                        {
                            var newTask = TaskParserHelper.CreateTak(task, data.Result.Matches.Last().MatchID - 1, matchRemaining < 100 ? matchRemaining : null);
                            TasksRepostory.AddTask(newTask);
                        }
                    }
                    if (data.Result.Matches != null && data.Result.Matches.Count > 0)
                    {
                        var tasks = TaskParserHelper.CreateTaks(data.Result.Matches);
                        TasksRepostory.AddTasks(tasks);
                    }
                    TasksRepostory.CompleteTask(task);
                    UnitOfWork.Commit();
                    return;
                }
            }
        }