Example #1
0
        public SeasonDataDTO MapToSeasonDataDTO(SeasonEntity source, SeasonDataDTO target = null)
        {
            if (source == null)
            {
                return(null);
            }
            if (target == null)
            {
                target = new SeasonDataDTO();
            }

            MapToSeasonInfoDTO(source, target);
            target.CreatedByUserId      = source.CreatedByUserId;
            target.LastModifiedByUserId = source.LastModifiedByUserId;
            target.Finished             = source.Finished;
            target.Results                 = source.Results?.Select(x => MapToResultInfoDTO(x)).ToArray();
            target.Reviews                 = source.Results?.Select(x => x.Reviews?.Select(y => MapToReviewInfoDTO(y))).Aggregate((x, y) => x.Concat(y)).ToArray();
            target.Schedules               = source.Schedules?.Select(x => MapToScheduleInfoDTO(x)).ToArray();
            target.Scorings                = source.Scorings?.Select(x => MapToScoringDataDTO(x)).ToArray();
            target.ScoringTables           = source.ScoringTables?.Select(x => MapToScoringTableDataDTO(x)).ToArray();
            target.SeasonEnd               = source.SeasonEnd.GetValueOrDefault();
            target.SeasonId                = source.SeasonId;
            target.SeasonName              = source.SeasonName;
            target.SeasonStart             = source.SeasonStart.GetValueOrDefault();
            target.Version                 = source.Version;
            target.VoteCategories          = LeagueDbContext.CustomVoteCategories.AsEnumerable().Select(x => MapToVoteCategoryDTO(x)).ToArray();
            target.CustomIncidents         = LeagueDbContext.CustomIncidentKinds.AsEnumerable().Select(x => MapToCustomIncidentDTO(x)).ToArray();
            target.HideCommentsBeforeVoted = source.HideCommentsBeforeVoted;
            target.SeasonStatisticSetIds   = source.SeasonStatistics.Select(x => x.Id).ToArray();

            return(target);
        }
Example #2
0
        public SeasonDataDTO MapToSeasonDataDTO(SeasonEntity source, SeasonDataDTO target = null)
        {
            if (source == null)
            {
                return(null);
            }
            if (target == null)
            {
                target = new SeasonDataDTO();
            }

            MapToSeasonInfoDTO(source, target);
            target.CreatedByUserId      = source.CreatedByUserId;
            target.LastModifiedByUserId = source.LastModifiedByUserId;
            target.Results       = source.Results?.Select(x => MapToResultInfoDTO(x)).ToList();
            target.Reviews       = source.Results?.Select(x => x.Reviews?.Select(y => MapToReviewInfoDTO(y))).Aggregate((x, y) => x.Concat(y));
            target.Schedules     = source.Schedules?.Select(x => MapToScheduleInfoDTO(x)).ToList();
            target.Scorings      = source.Scorings?.Select(x => MapToScoringDataDTO(x)).ToList();
            target.ScoringTables = source.ScoringTables?.Select(x => MapToScoringTableDataDTO(x)).ToList();
            target.SeasonEnd     = source.SeasonEnd.GetValueOrDefault();
            target.SeasonId      = source.SeasonId;
            target.SeasonName    = source.SeasonName;
            target.SeasonStart   = source.SeasonStart.GetValueOrDefault();
            target.Version       = source.Version;

            return(target);
        }
Example #3
0
        public static int GetWeekOffset(SeasonEntity seasonEntity, DateTime dateTimeUtc)
        {
            var weekOffset = -1;

            var beginWeekNumber = seasonEntity.BeginDateTimeUtc.GetIsoWeekOfYear();

            var weekNumber = dateTimeUtc.GetIsoWeekOfYear();

            var year = dateTimeUtc.Year;

            if (year == seasonEntity.BeginDateTimeUtc.Year)
            {
                weekOffset = (weekNumber - beginWeekNumber);
            }
            // ASSUMPTION: End Date Time UTC = Begin Date Time UTC + 1.
            else if (year == seasonEntity.EndDateTimeUtc.Year)
            {
                weekOffset = (52 - beginWeekNumber) + weekNumber;
            }
            else
            {
                throw new Exception($"The specified Date ({dateTimeUtc:yyyy-MMM-dd}) does not fall within the specified Fantasy Football Season (Season Id = {seasonEntity.SeasonId}).");
            }

            return(weekOffset);
        }
Example #4
0
        public SeasonInfoDTO MapToSeasonInfoDTO(SeasonEntity source, SeasonInfoDTO target = null)
        {
            if (source == null)
            {
                return(null);
            }
            if (target == null)
            {
                target = new SeasonInfoDTO();
            }

            MapToVersionInfoDTO(source, target);
            target.SeasonId   = source.SeasonId;
            target.SeasonName = source.SeasonName;

            return(target);
        }
Example #5
0
        public SeasonEntity MapToSeasonEntity(SeasonInfoDTO source, SeasonEntity target = null)
        {
            if (source == null)
            {
                return(null);
            }
            if (target == null)
            {
                GetSeasonEntity(source);
            }

            if (!MapToRevision(source, target))
            {
                return(target);
            }

            target.SeasonName = source.SeasonName;

            return(target);
        }
Example #6
0
        public SeasonEntity MapToSeasonEntity(SeasonDataDTO source, SeasonEntity target = null)
        {
            if (source == null)
            {
                return(null);
            }
            if (target == null)
            {
                GetSeasonEntity(source);
            }

            if (!MapToRevision(source, target))
            {
                return(target);
            }

            target.SeasonName           = source.SeasonName;
            target.Finished             = source.Finished;
            target.CreatedByUserId      = source.CreatedByUserId;
            target.LastModifiedByUserId = source.LastModifiedByUserId;
            if (target.Schedules == null)
            {
                target.Schedules = new List <Entities.Sessions.ScheduleEntity>();
            }
            MapCollection(source.Schedules, target.Schedules, GetScheduleEntity, x => x.MappingId, autoAddMissing: true);
            if (target.Scorings == null)
            {
                target.Scorings = new List <Entities.Results.ScoringEntity>();
            }
            MapCollection(source.Scorings, target.Scorings, MapToScoringEntity, x => x.ScoringId, autoAddMissing: true);
            if (target.ScoringTables == null)
            {
                target.ScoringTables = new List <Entities.Results.ScoringTableEntity>();
            }
            MapCollection(source.ScoringTables, target.ScoringTables, MapToScoringTableEntity, x => x.ScoringTableId, autoAddMissing: true);
            target.SeasonName = source.SeasonName;
            target.Version    = source.Version;
            target.HideCommentsBeforeVoted = source.HideCommentsBeforeVoted;

            return(target);
        }
Example #7
0
        private void ProcessTeamIdsTxt(BRBaseParam param, string txt)
        {
            var xml       = new XmlHelper(txt);
            var cdataFlag = "//c";
            var cdata     = xml.GetValues(cdataFlag);

            //  获取赛季名称
            var title      = xml.GetAttributeValue("//page", "title");
            var seasonName = title.Split('>').Last();

            SeasonEntity currentSeasonEntity = new SeasonEntity();

            currentSeasonEntity.SportId    = param.SportId;
            currentSeasonEntity.SeasonId   = param.SeasonId;
            currentSeasonEntity.SeasonName = seasonName;
            var se = SeasonEntityManager.AddOrGetCacheEntity <SeasonEntity>(param.SeasonId);

            se.CompareSetSeasonInfo(currentSeasonEntity);

            //  获取赛季teamIds
            var root = GetHtmlRoot(cdata[1]);
            var ul   = root.SelectSingleNode("//ul[@class='slickselect']");

            if (ul == null || ul.ChildNodes == null)
            {
                return;
            }

            List <string> teamIdList = new List <string>();

            foreach (var li in ul.ChildNodes)
            {
                var teamId = RegexGetStr(li.OuterHtml, "teamid','", "',");
                teamIdList.Add(teamId);
            }
            var dic = se.CompareSetTeamIdList(teamIdList);

            TeamAssignTask(param, dic);
        }
Example #8
0
        public IActionResult OnPost(string action)
        {
            IsGet = false;

            if (action == "Create")
            {
                // TODO: Check that the new Season does not Exist Already nor is it Active.

                var seasonEntity = new SeasonEntity()
                {
                    Description        = Description,
                    BeginDateTimeUtc   = BeginDateTimeUtc.Date,
                    EndDateTimeUtc     = EndDateTimeUtc.Date.AddDays(1).AddMilliseconds(-1),
                    CreatedDateTimeUtc = DateTime.UtcNow
                };

                SeasonsRepository.Create(seasonEntity);
                SeasonsRepository.SaveChanges();
            }

            return(RedirectToPage("/web/Index"));
        }
Example #9
0
        public void OnGet(int seasonId)
        {
            SeasonId = seasonId;

            Season = SeasonsRepository.Get(seasonId);
        }
Example #10
0
        public void Process(ITakerReptile.Dto.BaseData data)
        {
            BRData      bd    = data as BRData;
            SeasonParam param = bd.Param as SeasonParam;

            CheckSetHistoryParam(param);

            string txt;

            if (!HtmlDecode(bd.Html, out txt))
            {
                return;
            }

            //  首先添加联赛层级的比赛任务
            MatchParam mp = param.CopyCreateParam <MatchParam>();

            LeagueManager.AddOrUpdateParam(mp);

            if (param.CurrentUrlKey == "tableIds")
            {
                ProcessTableIdsTxt(param, txt);
                return;
            }
            else if (param.CurrentUrlKey == "teamIds")
            {
                ProcessTeamIdsTxt(param, txt);
                return;
            }

            var xml = new XmlHelper(txt);

            //  获取赛季名称
            var title      = xml.GetAttributeValue("//page", "title");
            var seasonName = title.Split('>').Last();

            SeasonEntity currentSeasonEntity = new SeasonEntity();

            currentSeasonEntity.SportId    = param.SportId;
            currentSeasonEntity.SeasonId   = param.SeasonId;
            currentSeasonEntity.SeasonName = seasonName;

            //  获取积分数据块
            var cdataFlag = "//c";
            var cdata     = xml.GetValues(cdataFlag);

            if (cdata.Count == 0)
            {
                //  杯赛没有积分数据的,添加获取所有队伍Id的任务
                param = param.CopyCreateParam <SeasonParam>();
                param.SetCurrentUrlKey("teamIds");
                LeagueManager.AddOrUpdateParam(param);
                return;
            }
            var teamRankData = "";

            if (cdata.Count > 5)
            {
                teamRankData = cdata[4];
            }
            if (string.IsNullOrEmpty(teamRankData))
            {
                return;
            }

            var currentRound = RegexGetStr(cdata[0], "sb-current\"><div class=\"label\">", "<");

            currentSeasonEntity.CurrentRound = currentRound;

            SeasonEntity se = SeasonEntityManager.AddOrGetCacheEntity <SeasonEntity>(param.SeasonId);

            se.CompareSetSeasonInfo(currentSeasonEntity);

            //  解析积分数据,并添加队伍任务,添加队伍积分数据,其他数据可由已经结束的比赛结果计算
            List <string>         teamIdList = new List <string>();
            List <SeasonTeamRank> trList     = new List <SeasonTeamRank>();
            var root   = GetHtmlRoot(teamRankData);
            var tables = root.SelectNodes("//table[@class='normaltable']/tbody");

            if (tables.Count == 0)
            {
                return;
            }
            if (tables.Count > 1)
            {
                //  多个积分榜数据,有分组别的,添加获取所有组别Id的任务
                param = param.CopyCreateParam <SeasonParam>();
                param.SetCurrentUrlKey("tableIds");
                LeagueManager.AddOrUpdateParam(param);
                //  同时添加获取全部队伍Id的任务
                param = param.CopyCreateParam <SeasonParam>();
                param.SetCurrentUrlKey("teamIds");
                LeagueManager.AddOrUpdateParam(param);
                return;
            }
            foreach (var node in tables[0].ChildNodes)
            {
                var teamId = RegexGetStr(node.ChildNodes[2].InnerHtml, "teamid','", "',");
                teamIdList.Add(teamId);
                var trDataArr = node.ChildNodes.Select(o => o.InnerText).ToArray();

                SeasonTeamRank tr = new SeasonTeamRank()
                {
                    SeasonId    = param.SeasonId,
                    TeamId      = teamId,
                    TeamPoints  = trDataArr[11],
                    Description = trDataArr[12]
                };
                trList.Add(tr);
            }
            SeasonTeams st = SeasonTeamsManager.AddOrGetCacheEntity <SeasonTeams>(param.SeasonId);

            st.CompareSetTeamRank(trList);


            //  要分配的队伍任务
            var teamTaskDic = se.CompareSetTeamIdList(teamIdList);

            TeamAssignTask(param, teamTaskDic);
        }