public DashboardController(Repository r, IMonthlySubmissionRepository m) { _monthly_submission_repo = m; _repository = r; dRepo = new DashboardRepository(r); if (DOWidget == null) { DOWidget = new DepartmentalOverviewWidget(dRepo); } if (MLSWidget == null) { MLSWidget = new MultiLevelScoreWidget(dRepo); } if (SMCWidget == null) { SMCWidget = new SingleMeasurementChartWidget(dRepo); } }
/// <summary> /// Gets department's measurements values information for widget data /// </summary> /// <returns>DataTable containing information on department's measurements, goals, and values</returns> public DataTable GetData() { if (CurrentDept == null) { return null; } var results = new DataTable(); results.Columns.Add("MeasurementName", typeof(string)); results.Columns.Add("CurrentMonthVal", typeof(string)); results.Columns.Add("CurrentMonthScore", typeof(string)); results.Columns.Add("PrevMonthVal", typeof(string)); results.Columns.Add("PrevMonthScore", typeof(string)); results.Columns.Add("PctChange", typeof(string)); results.Columns.Add("Values", typeof(string[][])); results.Columns.Add("Months", typeof(int[])); results.Columns.Add("MonthNames", typeof(string[])); results.Columns.Add("MeetsVal", typeof(string)); results.Columns.Add("MeetsPlusVal", typeof(string)); results.Columns.Add("ExceedsVal", typeof(string)); results.Columns.Add("Color", typeof(string)); var scoreCalculator = new MultiLevelScoreWidget(repo); if (CurrentDept.Measurements != null) { foreach (var meas in CurrentDept.Measurements) { //meas.RefreshDatapoints(); //meas.RefreshGoals(); var endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); var startDate = endDate.AddMonths(-1); string[] vals = new string[12]; string[][] values = new string[1][]; int[] months = new int[12]; string[] monthNames = new string[12]; for (var i = 0; i < 12; i++) { months[i] = i + 1; } var measurementName = meas.ViewModel.NameMeasurement; var currentMonth = meas.CalculateSingleMeasurementValue(startDate, endDate); if (currentMonth != null) { vals[11] = ((double)currentMonth).ToString("F0"); } monthNames[11] = endDate.ToString("MMM"); var score = scoreCalculator.GetMeasScore(meas, startDate, endDate); string currentMonthScore = score == null ? "" : score >= 5 ? "Exceeds" : score >= 4 ? "MeetsPlus" : score >= 3 ? "Meets" : score < 3 ? "Fails" : ""; endDate = endDate.AddMonths(-1); startDate = startDate.AddMonths(-1); var prevMonth = meas.CalculateSingleMeasurementValue(startDate, endDate); if (prevMonth != null) { vals[10] = ((double)prevMonth).ToString("F0"); } monthNames[10] = endDate.ToString("MMM"); score = scoreCalculator.GetMeasScore(meas, startDate, endDate); string prevMonthScore = score == null ? "" : score >= 5 ? "Exceeds" : score >= 4 ? "MeetsPlus" : score >= 3 ? "Meets" : score < 3 ? "Fails" : ""; var pctChange = "N/A"; if (currentMonth != null && prevMonth != null && prevMonth != 0) { var pctChangeVal = ((double)(((currentMonth / prevMonth) - 1) * 100)); pctChange = pctChangeVal.ToString("F0") + "%"; if (pctChangeVal >= 0) { pctChange = "+" + pctChange; } } var currentMonthVal = currentMonth.ToString(); var prevMonthVal = prevMonth.ToString(); for (int i = 9; i >= 0; i--) { endDate = endDate.AddMonths(-1); startDate = startDate.AddMonths(-1); var curMonth = meas.CalculateSingleMeasurementValue(startDate, endDate); if (curMonth != null) { vals[i] = ((double)curMonth).ToString("F0"); } monthNames[i] = endDate.ToString("MMM"); } values[0] = vals; string meetsVal = ""; string meetsPlusVal = ""; string exceedsVal = ""; if (meas.Goal != null) { var vm = meas.Goal.ViewModel; meetsVal = vm.MeetsVal != null ? ((double)vm.MeetsVal).ToString("0.00") : ""; meetsPlusVal = vm.MeetsPlusVal != null ? ((double)vm.MeetsPlusVal).ToString("0.00") : ""; exceedsVal = vm.ExceedsVal != null ? ((double)vm.ExceedsVal).ToString("0.00") : ""; } var color = getRandomColor(); results.Rows.Add(measurementName, currentMonthVal, currentMonthScore, prevMonthVal, prevMonthScore, pctChange, values, months, monthNames, meetsVal, meetsPlusVal, exceedsVal, color); } } return results; }
/// <summary> /// Gets department's measurement value information for currently set month /// </summary> /// <returns>DataTable containing information on department's measurements, goals, and values</returns> public DataTable GetData() { if (CurrentDept == null) { return null; } if (String.IsNullOrEmpty(CurrentPerformanceLevel)) { CurrentPerformanceLevel = "Meets"; } var results = new DataTable(); results.Columns.Add("Measurement", typeof(string)); results.Columns.Add("Goal", typeof(string)); results.Columns.Add("Value", typeof(string)); var endDate = new DateTime(currentYear, currentMonth, 1); var startDate = endDate.AddMonths(-1); var scoreCalculator = new MultiLevelScoreWidget(repo); if (CurrentDept.Measurements != null) { try { foreach (var meas in CurrentDept.Measurements) { //meas.RefreshDatapoints(); //meas.RefreshGoals(); if (meas.Goal != null) // no point adding to this widget if no measurement { string value = ""; var measVal = meas.CalculateSingleMeasurementValue(startDate, endDate); if (measVal != null) { value = ((double)measVal).ToString("0.00"); } var measPerformanceLevel = scoreCalculator.GetMeasScore(meas, startDate, endDate); var measName = meas.ViewModel.NameMeasurement; string goal = ""; var vm = meas.Goal.ViewModel; if (CurrentPerformanceLevel == "Exceeds" && measPerformanceLevel >= 5) { if (vm.ExceedsVal != null) { goal = (vm.Operation == "<=" ? "≤" : "≥") + " " + ((double)(vm.ExceedsVal)).ToString("0.00"); } results.Rows.Add(measName, goal, value); } else if (CurrentPerformanceLevel == "MeetsPlus" && measPerformanceLevel >= 4) { if (vm.MeetsPlusVal != null) { goal = (vm.Operation == "<=" ? "≤" : "≥") + " " + ((double)(vm.MeetsPlusVal)).ToString("0.00"); } results.Rows.Add(measName, goal, value); } else if ((CurrentPerformanceLevel == "Meets" && measPerformanceLevel >= 3) || (CurrentPerformanceLevel == "Fails" && measPerformanceLevel < 3)) { if (vm.MeetsVal != null) { goal = (vm.Operation == "<=" ? "≤" : "≥") + " " + ((double)(vm.MeetsVal)).ToString("0.00"); } results.Rows.Add(measName, goal, value); } } } } catch (Exception ex) { Console.WriteLine(ex); } } return results; }