public FixtureStats GetStats(int fixtureId) { var statsData = new FixtureStats(); if (fixtureId == 0) return statsData; using (var session = NHibernateHelper.OpenSession()) { var battingStats = session.CreateCriteria(typeof (BattingStat)) .List<BattingStat>().Where(x => x.Fixture.Id.Equals(fixtureId)).OrderBy(x => x.Position); foreach (var battingStat in battingStats) { statsData.Batting.Add(Mapper.Map(battingStat, new Batting())); } var bowlingStats = session.CreateCriteria(typeof(BowlingStat)) .List<BowlingStat>().Where(x => x.Fixture.Id.Equals(fixtureId)); foreach (var bowlingStat in bowlingStats) { statsData.Bowling.Add(Mapper.Map(bowlingStat, new Bowling())); } var fieldingStats = session.CreateCriteria(typeof(FieldingStat)) .List<FieldingStat>().Where(x => x.Fixture.Id.Equals(fixtureId)); foreach (var fieldingStat in fieldingStats) { statsData.Fielding.Add(Mapper.Map(fieldingStat, new Fielding())); } } return statsData; }
private void AddBattingStats(ISession session, FixtureStats statsData, IReadOnlyDictionary<string, string> paramCollection) { var battingStatsCriteria = session.CreateCriteria(typeof (BattingStat)); if (paramCollection.ContainsKey("year") || paramCollection.ContainsKey("team")) { var fixtureCriteria = battingStatsCriteria.CreateCriteria("Fixture", "f"); if (paramCollection.ContainsKey("year")) { battingStatsCriteria.Add(Expression.Ge("f.DatePlayed", DateTime.Parse(string.Format("31/12/{0}", paramCollection["year"])).AddYears(-1))) .Add(Expression.Lt("f.DatePlayed", DateTime.Parse(string.Format("01/01/{0}", paramCollection["year"])).AddYears(1))); } if (paramCollection.ContainsKey("team")) { fixtureCriteria.CreateCriteria("HomeTeam", "t"); fixtureCriteria.Add(Expression.Eq("t.Name", paramCollection["team"])); } } if (paramCollection.ContainsKey("player")) { var playerCriteria = battingStatsCriteria.CreateCriteria("Player", "p"); playerCriteria.CreateCriteria("Member", "m"); playerCriteria.Add(Expression.Like("m.MemberKey", paramCollection["player"], MatchMode.Anywhere)); } var stats = battingStatsCriteria.List<BattingStat>().OrderBy(x => x.Player.Member.MemberKey); var playerIdList = new List<int>(); foreach (var battingStat in stats) { var playerId = battingStat.Player.Id; if (playerIdList.Contains(playerId)) { CalculateBattingStat(statsData.Batting.Last(), battingStat); } else { statsData.Batting.Add(Mapper.Map(battingStat, new Batting())); SetBattingStat(battingStat, statsData.Batting.Last()); playerIdList.Add(playerId); } } }
public FixtureStats GetStats(Dictionary<string, string> paramCollection) { var statsData = new FixtureStats(); using (var session = NHibernateHelper.OpenSession()) { // get stats AddBattingStats(session, statsData, paramCollection); AddBowingStats(session, statsData, paramCollection); AddFieldingStats(session, statsData, paramCollection); return statsData; } }