public IQueryable <dynamic> GetFixtures([RouteData] string countryName) { var fixtures = Singleton.Get <RedisCacheManager>() .Get <IList <WebFormModel.FootballFixture> > ( () => RequestLoader.FootballFixturesByDate(DateTime.Now), RequestLoader.Locker_FootballFixturesByDate, DateTime.Now.AddHours(4), RedisKeyMaker.FootballFixturesByDate(DateTime.Now) ); // step1. 종료된 경기는 필터링 IEnumerable <WebFormModel.FootballFixture> filteredByData; if (string.IsNullOrEmpty(countryName)) { filteredByData = fixtures.Where(elem => elem.MatchTime > DateTime.Now.AddHours(-2)); } else { filteredByData = fixtures.Where(elem => elem.MatchTime > DateTime.Now.AddHours(-2) && elem.League.Country.Equals(countryName)); } // step2. 데이터를 리그, 시작시간으로 그룹화 var group_query = filteredByData.GroupBy(elem => new { League = elem.LeagueId, StartTime = elem.MatchTime }); var result_query = from queryData in group_query select new { League = queryData.FirstOrDefault().League.Name, queryData.Key.StartTime, queryData.FirstOrDefault()?.League.Flag, Fixtures = queryData.ToArray() }; return(result_query.AsQueryable()); }
public void DDLBindData() { List <DDL_NameValue> ddlDataList = new List <DDL_NameValue>(); ddlDataList.Add(new DDL_NameValue { Name = "Filtered by country" }); var fixtures = Singleton.Get <RedisCacheManager>() .Get <IList <WebFormModel.FootballFixture> > ( () => RequestLoader.FootballFixturesByDate(DateTime.Now), RequestLoader.Locker_FootballFixturesByDate, DateTime.Now.AddHours(4), RedisKeyMaker.FootballFixturesByDate(DateTime.Now) ); // 종료된 경기 필터링 var exclusive_finished = fixtures.Where(elem => elem.MatchTime > DateTime.Now.AddHours(-2)); var group_query = exclusive_finished.GroupBy(elem => new { CountryName = elem.League.Country }); var bindData = from queryData in group_query select new DDL_NameValue { Name = queryData.Key.CountryName, Value = queryData.Key.CountryName, }; ddlDataList.AddRange(bindData); ddl_kindCountry.DataTextField = "Name"; ddl_kindCountry.DataValueField = "Value"; ddl_kindCountry.DataSource = ddlDataList; ddl_kindCountry.DataBind(); }
/// <summary> /// 관심 경기 체크 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void chk_fixture_InterestedIndexChanged(Object sender, EventArgs e) { CheckBox chkbox = sender as CheckBox; if (chkbox == null) { return; } // 관심경기에 추가하는 경우 if (chkbox.Checked) { // 모든 경기 가져오기 var fixtures = Singleton.Get <RedisCacheManager>() .Get <IList <WebFormModel.FootballFixture> > ( () => RequestLoader.FootballFixturesByDate(DateTime.Now), RequestLoader.Locker_FootballFixturesByDate, DateTime.Now.AddHours(4), RedisKeyMaker.FootballFixturesByDate(DateTime.Now) ); // 관심 경기 검색 int interestedFixtureID = int.Parse(chkbox.ToolTip); var interestedFixture = fixtures.Where(elem => elem.FixtureId == interestedFixtureID).FirstOrDefault(); if (interestedFixture == null) { return; } // 관심 경기 데이터 가져오기 var interestedFixtures = Singleton.Get <RedisCacheManager>() .GetNullable <IList <WebFormModel.FootballFixture> > ( RedisKeyMaker.FootballInterestedFixture() ); if (interestedFixtures == null) { interestedFixtures = new List <WebFormModel.FootballFixture>(); } // 관심 경기에 추가 interestedFixtures.Add(interestedFixture); // 레디스에 저장 Singleton.Get <RedisCacheManager>().Set ( JsonConvert.SerializeObject(interestedFixtures), RequestLoader.Locker_FootballInterestedFixture, new DateTime(9999, 12, 31), RedisKeyMaker.FootballInterestedFixture() ); } else // 관심경기에서 제거하는 경우 { // 관심 경기 데이터 가져오기 var interestedFixtures = Singleton.Get <RedisCacheManager>() .GetNullable <IList <WebFormModel.FootballFixture> > ( RedisKeyMaker.FootballInterestedFixture() ); // 제거할 경기 int interestedFixtureID = int.Parse(chkbox.ToolTip); var interestedFixture = interestedFixtures.Where(elem => elem.FixtureId == interestedFixtureID).FirstOrDefault(); if (interestedFixture == null) { return; // 이미 제거된 경기 } // 관심 경기에서 제거 interestedFixtures.Remove(interestedFixture); // 레디스에 저장 Singleton.Get <RedisCacheManager>().Set ( JsonConvert.SerializeObject(interestedFixtures), RequestLoader.Locker_FootballInterestedFixture, new DateTime(9999, 12, 31), RedisKeyMaker.FootballInterestedFixture() ); } }