public void PerformanceParameterAnalysis_Property_Set_Test() { try { // Arrange PlayerAnalysis playerAnalysis = new PlayerAnalysis(); // Act playerAnalysis.sport = new Sport(); playerAnalysis.sport.id = 1; playerAnalysis.sport.name = "Sport 1"; playerAnalysis.sport.userId = 1; playerAnalysis.players = new List <Player>(); Player player = new Player(); player.id = 1; player.firstName = "FirstName"; player.lastName = "LastName"; playerAnalysis.players.Add(player); playerAnalysis.perfPara = new PerformanceParameter(); playerAnalysis.perfPara.id = 1; playerAnalysis.perfPara.perfParaName = new PerformanceParameterName(); playerAnalysis.perfPara.perfParaName.id = 1; playerAnalysis.perfPara.perfParaName.name = "Para Name 1"; playerAnalysis.perfPara.perfParaTypeGroup = new PerformanceParameterTypeGroup(); playerAnalysis.perfPara.perfParaTypeGroup.id = 1; playerAnalysis.perfPara.perfParaTypeGroup.name = "Para Type Group 1"; playerAnalysis.perfPara.sportId = 1; playerAnalysis.perfPara.customName = "custom name"; playerAnalysis.timeRange = "LAST1WEEK"; DateTime time = DateTime.Now; playerAnalysis.fromTime = time; playerAnalysis.toTime = time; // Assert Assert.AreEqual <long>(playerAnalysis.sport.id, 1); Assert.AreEqual <string>(playerAnalysis.sport.name, "Sport 1"); Assert.AreEqual <long>(playerAnalysis.sport.userId, 1); Assert.AreEqual <long>(playerAnalysis.players[0].id, 1); Assert.AreEqual <string>(playerAnalysis.players[0].firstName, "FirstName"); Assert.AreEqual <string>(playerAnalysis.players[0].lastName, "LastName"); Assert.AreEqual <long>(playerAnalysis.perfPara.id, 1); Assert.AreEqual <long>(playerAnalysis.perfPara.perfParaName.id, 1); Assert.AreEqual <string>(playerAnalysis.perfPara.perfParaName.name, "Para Name 1"); Assert.AreEqual <long>(playerAnalysis.perfPara.perfParaTypeGroup.id, 1); Assert.AreEqual <string>(playerAnalysis.perfPara.perfParaTypeGroup.name, "Para Type Group 1"); Assert.AreEqual <long>(playerAnalysis.perfPara.sportId, 1); Assert.AreEqual <string>(playerAnalysis.perfPara.customName, "custom name"); Assert.AreEqual <string>(playerAnalysis.timeRange, "LAST1WEEK"); Assert.AreEqual <DateTime>(playerAnalysis.fromTime, time); Assert.AreEqual <DateTime>(playerAnalysis.toTime, time); } catch (Exception ex) { throw new AssertFailedException("Setting PerformanceParameterAnalysis properties failed."); } }
public void Repository_Get_PlayerAnalysis_Test() { try { // Arrange PlayerAnalysisRepository PlayerAnalysisRepository = new PlayerAnalysisRepository(); PlayerAnalysis playerAnalysis = new PlayerAnalysis(); playerAnalysis.sport = new Sport(); playerAnalysis.sport.id = 1; playerAnalysis.sport.name = "Sport 1"; playerAnalysis.sport.userId = 1; playerAnalysis.players = new List <Player>(); Player player = new Player(); player.id = 1; player.firstName = "FirstName"; player.lastName = "LastName"; playerAnalysis.players.Add(player); playerAnalysis.perfPara = new PerformanceParameter(); playerAnalysis.perfPara.id = 1; playerAnalysis.perfPara.perfParaName = new PerformanceParameterName(); playerAnalysis.perfPara.perfParaName.id = 1; playerAnalysis.perfPara.perfParaName.name = "Para Name 1"; playerAnalysis.perfPara.perfParaTypeGroup = new PerformanceParameterTypeGroup(); playerAnalysis.perfPara.perfParaTypeGroup.id = 1; playerAnalysis.perfPara.perfParaTypeGroup.name = "Para Type Group 1"; playerAnalysis.perfPara.sportId = 1; playerAnalysis.perfPara.customName = "custom name"; playerAnalysis.timeRange = "LAST1WEEK"; DateTime time = DateTime.Now; playerAnalysis.fromTime = time; playerAnalysis.toTime = time; // Act HighChart PlayerAnalysisResultFromDb = PlayerAnalysisRepository.GetPlayerAnalysis(playerAnalysis); // Assert Assert.IsNotNull(PlayerAnalysisResultFromDb); Assert.AreEqual(PlayerAnalysisResultFromDb.chart.type, "line"); Assert.IsTrue(PlayerAnalysisResultFromDb.xAxis.categories.Count == 8); Assert.AreEqual(PlayerAnalysisResultFromDb.yAxis.title.text, playerAnalysis.perfPara.perfParaName.name); Assert.AreEqual(PlayerAnalysisResultFromDb.tooltip.valueSuffix, " " + playerAnalysis.perfPara.perfParaTypeGroup.name); Assert.AreEqual(PlayerAnalysisResultFromDb.series[0].name, playerAnalysis.players[0].firstName + " " + playerAnalysis.players[0].lastName); Assert.IsTrue(PlayerAnalysisResultFromDb.series[0].data.Count == 8); } catch (Exception) { throw new AssertFailedException("Unable to fetch player Analysis."); } }
public void Post_Valid_Test() { // Arrange PlayerAnalysis PlayerAnalysisObjAsInput = new PlayerAnalysis(); PlayerAnalysisObjAsInput.sport = new Sport(); PlayerAnalysisObjAsInput.sport.id = 1; PlayerAnalysisObjAsInput.sport.name = "Sport 1"; PlayerAnalysisObjAsInput.sport.userId = 1; PlayerAnalysisObjAsInput.players = new List <Player>(); Player player = new Player(); player.id = 1; player.firstName = "FirstName"; player.lastName = "LastName"; PlayerAnalysisObjAsInput.players.Add(player); PlayerAnalysisObjAsInput.perfPara = new PerformanceParameter(); PlayerAnalysisObjAsInput.perfPara.id = 1; PlayerAnalysisObjAsInput.perfPara.perfParaName = new PerformanceParameterName(); PlayerAnalysisObjAsInput.perfPara.perfParaName.id = 1; PlayerAnalysisObjAsInput.perfPara.perfParaName.name = "Para Name 1"; PlayerAnalysisObjAsInput.perfPara.perfParaTypeGroup = new PerformanceParameterTypeGroup(); PlayerAnalysisObjAsInput.perfPara.perfParaTypeGroup.id = 1; PlayerAnalysisObjAsInput.perfPara.perfParaTypeGroup.name = "Para Type Group 1"; PlayerAnalysisObjAsInput.perfPara.sportId = 1; PlayerAnalysisObjAsInput.perfPara.customName = "custom name"; PlayerAnalysisObjAsInput.timeRange = "LAST1WEEK"; PlayerAnalysisObjAsInput.fromTime = DateTime.Now.AddDays(-1); PlayerAnalysisObjAsInput.toTime = DateTime.Now; HighChart highChart = new HighChart(); var mockRepository = new Mock <IPlayerAnalysisRepository>(); mockRepository.Setup(x => x.GetPlayerAnalysis(PlayerAnalysisObjAsInput)) .Returns(highChart); var controller = new PlayerAnalysisController(mockRepository.Object); controller.Request = new HttpRequestMessage(); controller.Configuration = new HttpConfiguration(); // Act HttpResponseMessage response = controller.Post(PlayerAnalysisObjAsInput); // Assert string responseJSONStr = response.Content.ReadAsStringAsync().Result; Assert.IsNotNull(responseJSONStr); }
public void PerformanceParameterAnalysis_Initialization_Test() { try { // Arrange and Act PlayerAnalysis playerAnalysis = new PlayerAnalysis(); // Assert Assert.IsNotNull(playerAnalysis); } catch (Exception) { throw new AssertFailedException("PlayerAnalysis initialization failed."); } }
public void Summarize(float budgetPerStat, List <Stat> stats) { this.ProjectedValue = 0f; StringBuilder sb = new StringBuilder(); sb.AppendFormat("<TR><TD>{0}</TD>", this.Player.Name); foreach (Stat stat in stats) { PlayerAnalysis a = this.Analyses.FirstOrDefault(pa => pa.Stat == stat.Name); if (a != null) { float statValue = budgetPerStat * a.Percentage; sb.AppendFormat("<TD>Raw Value: {0}<BR>Rank: {1}<BR>Percentage: {2}<BR>Value: {3}</TD>", a.RawValue, a.Rank, a.Percentage, statValue); this.ProjectedValue += statValue; } else { sb.Append("<TD> </TD>"); } } sb.AppendFormat("<TD>{0}</TD>", this.ProjectedValue); sb.AppendLine("</TR>"); this.HTML = sb.ToString(); }
// POST: api/PlayerAnalysis public HttpResponseMessage Post([FromBody] PlayerAnalysis playerInfo) { HttpResponseMessage response; if (playerInfo == null) { response = Request.CreateResponse(HttpStatusCode.NoContent, "Invalid JSON Passed."); return(response); } HighChart highChart = _iPlayerAnalysisRepository.GetPlayerAnalysis(playerInfo); if (highChart != null) { response = Request.CreateResponse(HttpStatusCode.OK, "PlayerAnalysis added successfully."); response.Content = new StringContent(Helper.Serialize(highChart)); } else { response = Request.CreateResponse(HttpStatusCode.Conflict, "Error adding PlayerAnalysis."); } return(response); }
public HighChart GetPlayerAnalysis(PlayerAnalysis playerAnalysis) { HighChart highChart = new HighChart(); highChart.chart = new Chart(); highChart.chart.type = "line"; highChart.title = new Title(); highChart.title.text = "Performance Analysis Report of " + playerAnalysis.perfPara.perfParaName.name + " for " + playerAnalysis.sport.name; highChart.subtitle = new Title(); if (playerAnalysis.timeRange == "LAST1WEEK") { highChart.subtitle.text = "<strong>Duration</strong>: Last 1 Week"; playerAnalysis.fromTime = DateTime.Now.AddDays(-7); playerAnalysis.toTime = DateTime.Now; } else if (playerAnalysis.timeRange == "LAST1MONTH") { highChart.subtitle.text = "Duration: Last 1 Month"; playerAnalysis.fromTime = DateTime.Now.AddMonths(-1); playerAnalysis.toTime = DateTime.Now; } else if (playerAnalysis.timeRange == "LAST3MONTHS") { highChart.subtitle.text = "Duration: Last 3 Months"; playerAnalysis.fromTime = DateTime.Now.AddMonths(-3); playerAnalysis.toTime = DateTime.Now; } else if (playerAnalysis.timeRange == "LAST6MONTHS") { highChart.subtitle.text = "Duration: Last 6 Months"; playerAnalysis.fromTime = DateTime.Now.AddMonths(-6); playerAnalysis.toTime = DateTime.Now; } else { highChart.subtitle.text = "Duration: Custom"; playerAnalysis.fromTime = DateTime.Now.AddDays(-7); playerAnalysis.toTime = DateTime.Now; } highChart.xAxis = new XAxis(); highChart.xAxis.categories = new List <string>(); highChart.yAxis = new YAxis(); highChart.yAxis.title = new Title(); highChart.yAxis.title.text = playerAnalysis.perfPara.perfParaName.name; highChart.tooltip = new ToolTip(); highChart.series = new List <SeriesElement>(); SeriesElement seriesElement; String sqlStr = "select id, group_id, name from perf_para_type where group_id = @groupId"; MySqlCommand cmd = new MySqlCommand(sqlStr, conn); cmd.Parameters.AddWithValue("groupId", playerAnalysis.perfPara.perfParaTypeGroup.id); MySqlDataReader perfParaTypeSqlReader = cmd.ExecuteReader(); List <PerformanceParameterType> perfParaTypes = new List <PerformanceParameterType>(); PerformanceParameterType perfParaType = null; while (perfParaTypeSqlReader.Read()) { perfParaType = new PerformanceParameterType(); perfParaType.id = perfParaTypeSqlReader.GetInt32(0); perfParaType.groupId = perfParaTypeSqlReader.GetInt32(1); perfParaType.name = perfParaTypeSqlReader.GetString(2); perfParaTypes.Add(perfParaType); } perfParaTypeSqlReader.Close(); MySqlDataReader sqlReader; if (perfParaTypes.Count == 1) { highChart.tooltip.valueSuffix = " " + playerAnalysis.perfPara.perfParaTypeGroup.name; DateTime startTime = playerAnalysis.fromTime; while (startTime <= playerAnalysis.toTime) { highChart.xAxis.categories.Add(startTime.Day.ToString() + "-" + startTime.Month.ToString()); startTime = startTime.AddDays(1); } for (int i = 0; i < playerAnalysis.players.Count; i++) { seriesElement = new SeriesElement(); seriesElement.name = playerAnalysis.players[i].firstName + " " + playerAnalysis.players[i].lastName; seriesElement.data = new List <string>(); sqlStr = "select value from player_eval where sport_id = @sportId and player_id = @playerId and name_id = @nameId and type_id = @typeId and eval_date = @evalDate"; cmd = new MySqlCommand(sqlStr, conn); cmd.Parameters.AddWithValue("sportId", playerAnalysis.sport.id); cmd.Parameters.AddWithValue("playerId", playerAnalysis.players[i].id); cmd.Parameters.AddWithValue("nameId", playerAnalysis.perfPara.perfParaName.id); cmd.Parameters.AddWithValue("typeId", ((PerformanceParameterType)perfParaTypes[0]).id); MySqlParameter para; startTime = playerAnalysis.fromTime; while (startTime <= playerAnalysis.toTime) { if (cmd.Parameters.Contains("evalDate")) { cmd.Parameters.RemoveAt(4); } para = new MySqlParameter("evalDate", MySqlDbType.Date); para.Value = startTime; cmd.Parameters.Add(para); sqlReader = cmd.ExecuteReader(); if (sqlReader.Read()) { string[] timeformats = { @"m\:ss", @"mm\:ss", @"h\:mm\:ss" }; TimeSpan duration; if (playerAnalysis.perfPara.perfParaTypeGroup.name == "min:sec") { duration = TimeSpan.ParseExact(sqlReader.GetString(0), timeformats, CultureInfo.InvariantCulture); seriesElement.data.Add(duration.TotalSeconds.ToString()); highChart.tooltip.valueSuffix = " total sec"; } else if (playerAnalysis.perfPara.perfParaTypeGroup.name == "hr:min:sec") { duration = TimeSpan.ParseExact(sqlReader.GetString(0), timeformats, CultureInfo.InvariantCulture); seriesElement.data.Add(duration.TotalSeconds.ToString()); highChart.tooltip.valueSuffix = " total sec"; } else { seriesElement.data.Add(sqlReader.GetString(0)); } } else { seriesElement.data.Add(string.Empty); } sqlReader.Close(); startTime = startTime.AddDays(1); } highChart.series.Add(seriesElement); } } else { highChart.chart.type = "column"; for (int i = 0; i < perfParaTypes.Count; i++) { highChart.xAxis.categories.Add(((PerformanceParameterType)perfParaTypes[i]).name); } for (int i = 0; i < playerAnalysis.players.Count; i++) { seriesElement = new SeriesElement(); seriesElement.name = playerAnalysis.players[i].firstName + " " + playerAnalysis.players[i].lastName; seriesElement.data = new List <string>(); sqlStr = "select count(*) from player_eval where sport_id = @sportId and player_id = @playerId and name_id = @nameId and type_id = @typeId and eval_date >= @evalFromDate"; cmd = new MySqlCommand(sqlStr, conn); cmd.Parameters.AddWithValue("sportId", playerAnalysis.sport.id); cmd.Parameters.AddWithValue("playerId", playerAnalysis.players[i].id); cmd.Parameters.AddWithValue("nameId", playerAnalysis.perfPara.perfParaName.id); MySqlParameter para = new MySqlParameter("evalFromDate", MySqlDbType.Date); para.Value = playerAnalysis.fromTime; cmd.Parameters.Add(para); //para = new MySqlParameter("evalToDate", MySqlDbType.Date); //para.Value = playerAnalysis.toTime; //cmd.Parameters.Add(para); for (int j = 0; j < perfParaTypes.Count; j++) { if (cmd.Parameters.Contains("typeId")) { cmd.Parameters.RemoveAt(4); } cmd.Parameters.AddWithValue("typeId", ((PerformanceParameterType)perfParaTypes[j]).id); seriesElement.data.Add(cmd.ExecuteScalar().ToString()); } highChart.series.Add(seriesElement); } } return(highChart); }