public ChartData GetComponentsResultsByCategory() { int assessmentId = Auth.AssessmentForUser(); ChartData chartData = null; using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[usp_getComponentsResultsByCategory]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getComponentsResultsByCategory>(); chartData = new ChartData(); foreach (usp_getComponentsResultsByCategory c in result) { chartData.Labels.Add(c.Question_Group_Heading); chartData.data.Add((double)c.percent); chartData.DataRows.Add(new DataRows { title = c.Question_Group_Heading, passed = c.passed, total = c.total, percent = c.percent }); } }); } return(chartData); }
/// <summary> /// Returns a list of questions generated by components in the network. /// The questions correspond to the SAL level of each component's Zone level. /// Questions for components in hidden layers are not included. /// </summary> /// <returns></returns> public List <ComponentQuestion> GetComponentQuestions() { var l = new List <ComponentQuestion>(); using (var db = new CSET_Context()) { List <usp_getExplodedComponent> results = null; db.LoadStoredProc("[dbo].[usp_getExplodedComponent]") .WithSqlParam("assessment_id", _assessmentId) .ExecuteStoredProc((handler) => { results = handler.ReadToList <usp_getExplodedComponent>().OrderBy(c => c.ComponentName).ThenBy(c => c.QuestionText).ToList(); }); foreach (usp_getExplodedComponent q in results) { l.Add(new ComponentQuestion { Answer = q.Answer_Text, ComponentName = q.ComponentName, Component_Symbol_Id = q.Component_Symbol_Id, Question = q.QuestionText, LayerName = q.LayerName, SAL = q.SAL, Zone = q.ZoneName }); } } return(l); }
public ChartData GetStandardsRankedCategories() { int assessmentId = Auth.AssessmentForUser(); ChartData chartData = null; using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[usp_getStandardsRankedCategories]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getStandardsRankedCategories>(); List <double> data = new List <double>(); List <DataRows> rows = new List <DataRows>(); chartData = new ChartData(); chartData.DataRows = new List <DataRows>(); foreach (usp_getStandardsRankedCategories c in result) { chartData.data.Add((double)(c.prc ?? 0)); chartData.Labels.Add(c.Question_Group_Heading); chartData.DataRows.Add(new DataRows() { failed = c.nuCount ?? 0, title = c.Question_Group_Heading, percent = c.Percent ?? 0, total = c.qc ?? 0, rank = c.prc ?? 0 }); } }); } return(chartData); }
public ChartData GetComponentsRankedCategories() { int assessmentId = Auth.AssessmentForUser(); ChartData chartData = null; using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[usp_getComponentsRankedCategories]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getComponentsRankedCategories>(); chartData = new ChartData(); foreach (usp_getComponentsRankedCategories c in result) { chartData.data.Add((double)c.prc); chartData.Labels.Add(c.Question_Group_Heading); // create a new DataRows entry with answer percentages for this component chartData.DataRows.Add(new DataRows { title = c.Question_Group_Heading, rank = c.prc, failed = c.nuCount, /// ?????? total = c.qc, percent = c.Percent }); } }); } return(chartData); }
public List <Answer_Components_Exploded_ForJSON> GetOverrideQuestions(int assessmentId, int question_id, int Component_Symbol_Id) { List <Answer_Components_Exploded_ForJSON> rlist = new List <Answer_Components_Exploded_ForJSON>(); using (CSET_Context context = new CSET_Context()) { List <usp_getExplodedComponent> questionlist = null; context.LoadStoredProc("[dbo].[usp_getExplodedComponent]") .WithSqlParam("assessment_id", _assessmentId) .ExecuteStoredProc((handler) => { questionlist = handler.ReadToList <usp_getExplodedComponent>().Where(c => c.Question_Id == question_id && c.Component_Symbol_Id == Component_Symbol_Id).ToList(); }); IQueryable <Answer_Components> answeredQuestionList = context.Answer_Components.Where(a => a.Assessment_Id == assessmentId && a.Question_Or_Requirement_Id == question_id); foreach (var question in questionlist.ToList()) { Answer_Components_Exploded_ForJSON tmp = null; tmp = TinyMapper.Map <Answer_Components_Exploded_ForJSON>(question); tmp.Component_GUID = question.Component_GUID.ToString(); rlist.Add(tmp); } return(rlist); } }
public HorizBarChart GetCategoryAverages() { TokenManager tm = new TokenManager(); var aggregationID = tm.PayloadInt("aggreg"); if (aggregationID == null) { return(null); } var dict = new Dictionary <string, List <decimal> >(); using (CSET_Context db = new CSET_Context()) { var assessmentList = db.AGGREGATION_ASSESSMENT.Where(x => x.Aggregation_Id == aggregationID) .Include(x => x.Assessment_).OrderBy(x => x.Assessment_.Assessment_Date) .ToList(); foreach (var a in assessmentList) { db.LoadStoredProc("[usp_getStandardsResultsByCategory]") .WithSqlParam("assessment_id", a.Assessment_Id) .ExecuteStoredProc((handler) => { // usp_getStandardsResultsByCategory 15 var procResults = (List <usp_getStandardsResultsByCategory>)handler.ReadToList <usp_getStandardsResultsByCategory>(); foreach (var procResult in procResults) { if (!dict.ContainsKey(procResult.Question_Group_Heading)) { dict.Add(procResult.Question_Group_Heading, new List <decimal>()); } if (procResult.Actualcr > 0) { dict[procResult.Question_Group_Heading].Add(procResult.prc); } } }); } } var catList = dict.Keys.ToList(); catList.Sort(); var response = new HorizBarChart(); var ds = new ChartDataSet(); response.datasets.Add(ds); response.labels.AddRange(catList); foreach (string cat in catList) { ds.data.Add((float)dict[cat].DefaultIfEmpty(0).Average()); } return(response); }
private ChartData GetStandardsSummaryMultiple(CSET_Context context, int assessmentId) { ChartData myChartData = new ChartData(); myChartData.DataRowsPie = new List <DataRowsPie>(); myChartData.Colors = new List <string>(); var results = new StandardSummaryOverallMultiResult(); context.LoadStoredProc("[dbo].[usp_getStandardsSummaryPage]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { results.Result1 = handler.ReadToList <DataRowsPie>().ToList(); }); SortIntoAnswerOrder(results); /** * foreach each standard in the list * create a chartdata * foreach record * if the previous does not equal the current then create a new chartdata * add the record to the chart data * */ string previousStandard = ""; Dictionary <string, ChartData> answers = new Dictionary <string, ChartData>(); foreach (var data in results.Result1.OrderBy(x => x.Short_Name).ThenBy(x => x.Answer_Order)) { //this only adds the labels if (previousStandard != data.Short_Name) { myChartData.Labels.Add(data.Short_Name); previousStandard = data.Short_Name; } ChartData chartData; if (!answers.TryGetValue(data.Answer_Full_Name, out chartData)) { chartData = new ChartData(); chartData.label = data.Answer_Full_Name; chartData.backgroundColor = answerColorDefs[data.Answer_Text]; myChartData.dataSets.Add(chartData); answers.Add(data.Answer_Full_Name, chartData); } myChartData.DataRowsPie.Add(data); chartData.data.Add((double)(data.Percent ?? 0)); } return(myChartData); }
public PieChart GetComponentsAnswerDistribution() { TokenManager tm = new TokenManager(); var aggregationID = tm.PayloadInt("aggreg"); if (aggregationID == null) { return(null); } // create place to accumulate percentages for each answer var dict = new Dictionary <string, List <decimal> >(); var answerNames = new List <string>() { "Yes", "No", "Not Applicable", "Alternate", "Unanswered" }; foreach (string a in answerNames) { dict.Add(a, new List <decimal>()); } using (CSET_Context db = new CSET_Context()) { var assessmentList = db.AGGREGATION_ASSESSMENT.Where(x => x.Aggregation_Id == aggregationID) .Include(x => x.Assessment_).OrderBy(x => x.Assessment_.Assessment_Date) .ToList(); foreach (var a in assessmentList) { db.LoadStoredProc("[usp_GetComponentsSummary]") .WithSqlParam("assessment_id", a.Assessment_Id) .ExecuteStoredProc((handler) => { var procResults = (List <usp_getComponentsSummmary>)handler.ReadToList <usp_getComponentsSummmary>(); foreach (var procResult in procResults) { dict[procResult.Answer_Full_Name].Add(procResult.value); } }); } var response = new PieChart(); response.reportType = "Overall Summary - Standards Answers"; response.labels.AddRange(answerNames); foreach (string a in answerNames) { response.data.Add((float)dict[a].DefaultIfEmpty(0).Average()); } return(response); } }
internal List <usp_getRRASummaryByGoalOverall> getRRASummaryByGoalOverall(CSET_Context context, int assessmentId) { List <usp_getRRASummaryByGoalOverall> results = null; context.LoadStoredProc("[usp_getRRASummaryByGoalOverall]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { results = handler.ReadToList <usp_getRRASummaryByGoalOverall>().ToList(); }); return(results); }
public ChartData GetOverallRankedCategories() { int assessmentId = Auth.AssessmentForUser(); ChartData chartData = null; using (CSET_Context context = new CSET_Context()) { var results = new RankedCategoriesMultiResult(); context.LoadStoredProc("[usp_GetOverallRankedCategoriesPage]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { results.Result1 = handler.ReadToList <usp_getRankedCategories>().ToList(); }); if (results.Count >= 1) { List <double> data = new List <double>(); ChartData overallBars = new ChartData() { backgroundColor = "red", borderWidth = "1", label = "Overall Ranked Categories", data = data }; chartData = new ChartData(); chartData.DataRows = new List <DataRows>(); int i = 1; foreach (usp_getRankedCategories c in results.Result1) { chartData.data.Add((double)(c.prc ?? 0)); chartData.Labels.Add(c.Question_Group_Heading); chartData.DataRows.Add(new DataRows() { failed = (c.nuCount ?? 0), percent = (c.prc ?? 0), total = (c.qc ?? 0), title = c.Question_Group_Heading, rank = i++ }); } } } return(chartData); }
/// <summary> /// /// </summary> /// <param name="assessmentID"></param> /// <returns></returns> public static List <RelevantAnswers> GetAnswersForAssessment(int assessmentID) { List <RelevantAnswers> answers = new List <RelevantAnswers>(); using (var db = new CSET_Context()) { db.LoadStoredProc("[dbo].[RelevantAnswers]") .WithSqlParam("assessment_id", assessmentID) .ExecuteStoredProc((handler) => { answers = handler.ReadToList <RelevantAnswers>().ToList(); }); } return(answers); }
/// <summary> /// /// </summary> /// <param name="resp"></param> /// <param name="context"></param> public void BuildOverridesOnly(QuestionResponse resp, CSET_Context context) { // Because these are only override questions and the lists are short, don't bother grouping by group header. Just subcategory. List <Answer_Components_Base> dlist = null; context.LoadStoredProc("[usp_getAnswerComponentOverrides]") .WithSqlParam("assessment_id", this.assessmentID) .ExecuteStoredProc((handler) => { dlist = handler.ReadToList <Answer_Components_Base>() .OrderBy(x => x.Symbol_Name).ThenBy(x => x.ComponentName).ThenBy(x => x.Component_Guid) .ThenBy(x => x.Universal_Sub_Category) .ToList(); }); AddResponseComponentOverride(resp, context, dlist, "Component Overrides"); }
public List <AnswerCounts> GetAnswerTotals() { TokenManager tm = new TokenManager(); var aggregationID = tm.PayloadInt("aggreg"); if (aggregationID == null) { return(null); } using (CSET_Context db = new CSET_Context()) { var assessmentList = db.AGGREGATION_ASSESSMENT.Where(x => x.Aggregation_Id == aggregationID) .Include(x => x.Assessment_).OrderBy(x => x.Assessment_.Assessment_Date) .ToList(); List <AnswerCounts> response = new List <AnswerCounts>(); foreach (var a in assessmentList) { db.LoadStoredProc("[usp_getStandardSummaryOverall]") .WithSqlParam("assessment_id", a.Assessment_Id) .ExecuteStoredProc((handler) => { var results = (List <usp_getStandardSummaryOverall>)handler.ReadToList <usp_getStandardSummaryOverall>(); var ansCount = new AnswerCounts() { AssessmentId = a.Assessment_Id, Alias = a.Alias, Total = results.Max(x => x.Total), Y = results.Where(x => x.Answer_Text == "Y").FirstOrDefault().qc, N = results.Where(x => x.Answer_Text == "N").FirstOrDefault().qc, A = results.Where(x => x.Answer_Text == "A").FirstOrDefault().qc, NA = results.Where(x => x.Answer_Text == "NA").FirstOrDefault().qc, U = results.Where(x => x.Answer_Text == "U").FirstOrDefault().qc }; response.Add(ansCount); }); } return(response); } }
public ChartData GetTopCategories([FromUri] int?total) { if (total == null) { total = 10000; } int assessmentId = Auth.AssessmentForUser(); ChartData chartData = null; using (CSET_Context context = new CSET_Context()) { var results = new RankedCategoriesMultiResult(); context.LoadStoredProc("[usp_GetRankedCategoriesPage]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { results.Result1 = handler.ReadToList <usp_getRankedCategories>().ToList(); }); if (results.Count >= 1) { List <double> data = new List <double>(); ChartData overallBars = new ChartData() { backgroundColor = "red", borderWidth = "1", label = "Overall Ranked Categories", data = data }; chartData = new ChartData(); foreach (usp_getRankedCategories c in results.Result1.Take((int)total)) { chartData.data.Add((double)c.prc); chartData.Labels.Add(c.Question_Group_Heading); } } } return(chartData); }
/// <summary> /// Returns the category percentages for an assessment. /// </summary> /// <param name="assessmentId"></param> /// <param name="db"></param> private List <usp_getStandardsResultsByCategory> GetCategoryPercentages(int assessmentId, CSET_Context db) { List <usp_getStandardsResultsByCategory> response = null; db.LoadStoredProc("[usp_getStandardsResultsByCategory]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getStandardsResultsByCategory>(); var labels = (from usp_getStandardsResultsByCategory an in result orderby an.Question_Group_Heading select an.Question_Group_Heading).Distinct().ToList(); response = (List <usp_getStandardsResultsByCategory>)result; }); return(response); }
public List <usp_getNetworkWarnings> GetNetworkWarnings() { int assessmentId = Auth.AssessmentForUser(); using (CSET_Context context = new CSET_Context()) { List <usp_getNetworkWarnings> wlist = new List <usp_getNetworkWarnings>(); context.LoadStoredProc("[dbo].[usp_getNetworkWarnings]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getNetworkWarnings>(); foreach (usp_getNetworkWarnings w in result) { wlist.Add(w); } }); return(wlist); } }
public ChartData GetComponentsResultsByCategory() { int assessmentId = Auth.AssessmentForUser(); ChartData red = null; using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[dbo].[usp_getComponentsResultsByCategory]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getComponentsResultsByCategory>(); red = new ChartData(); foreach (usp_getComponentsResultsByCategory c in result) { red.data.Add((double)c.prc); red.Labels.Add(c.Question_Group_Heading); } }); } return(red); }
public ChartData GetComponentTypes() { int assessmentId = Auth.AssessmentForUser(); ChartData red = null; using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[dbo].[usp_getComponentTypes]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getComponentTypes>(); red = new ChartData(); foreach (usp_getComponentTypes c in result) { red.data.Add((double)c.Value); red.Labels.Add(c.component_type); } }); } return(red); }
public ChartData GetComponentsSummary() { int assessmentId = Auth.AssessmentForUser(); ChartData red = null; using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[dbo].[usp_getComponentsSummary]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var fooResults = handler.ReadToList <usp_getComponentsSummmary>(); red = new ChartData(); foreach (usp_getComponentsSummmary c in fooResults) { red.data.Add((double)c.value); red.Labels.Add(c.Answer_Full_Name); } }); } return(red); }
public ChartData ComponentTypes() { int assessmentId = Auth.AssessmentForUser(); // initialize the response container ChartData chartData = new ChartData { Colors = new List <string>(), DataRowsPie = new List <DataRowsPie>() }; using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[usp_getComponentTypes]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var componentTotals = handler.ReadToList <usp_getComponentTypes>(); var cdY = new ChartData { label = "Yes", backgroundColor = answerColorDefs["Y"] }; chartData.dataSets.Add(cdY); var cdN = new ChartData { label = "No", backgroundColor = answerColorDefs["N"] }; chartData.dataSets.Add(cdN); var cdNA = new ChartData { label = "N/A", backgroundColor = answerColorDefs["NA"] }; chartData.dataSets.Add(cdNA); var cdAlt = new ChartData { label = "Alt", backgroundColor = answerColorDefs["A"] }; chartData.dataSets.Add(cdAlt); var cdU = new ChartData { label = "Unanswered", backgroundColor = answerColorDefs["U"] }; chartData.dataSets.Add(cdU); foreach (var total in componentTotals) { chartData.Labels.Add(total.Symbol_Name); // adjust the percentages to equal 100% after rounding var adjTotal = new BusinessLogic.Common.PercentageFixer(total.Y, total.N, total.NA, total.A, total.U); cdY.data.Add((int)adjTotal.Y); cdN.data.Add((int)adjTotal.N); cdNA.data.Add((int)adjTotal.NA); cdAlt.data.Add((int)adjTotal.A); cdU.data.Add((int)adjTotal.U); // create a new DataRows entry with answer percentages for this component var row = new DataRows { title = total.Symbol_Name, yes = adjTotal.Y, no = adjTotal.N, na = adjTotal.NA, alt = adjTotal.A, unanswered = adjTotal.U, total = total.Total }; chartData.DataRows.Add(row); } }); } chartData.dataSets.ForEach(ds => { ds.borderWidth = "0"; ds.borderColor = "transparent"; }); return(chartData); }
public FirstPage GetDashboard() { int assessmentId = Auth.AssessmentForUser(); FirstPage rval = null; using (CSET_Context context = new CSET_Context()) { var results = new FirstPageMultiResult(); context.LoadStoredProc("[dbo].[usp_GetFirstPage]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { results.Result1 = handler.ReadToList <GetCombinedOveralls>().ToList(); handler.NextResult(); results.Result2 = handler.ReadToList <usp_getRankedCategories>().ToList(); }); if (results.Count >= 2) { List <double> data = new List <double>(); List <String> labels = new List <String>(); ChartData stand = null; ChartData comp = null; foreach (GetCombinedOveralls c in results.Result1) { // Questions or Requirements are included only if we are in that 'mode' // Do not include 'Framework' entry. string mode = this.GetAssessmentMode(assessmentId); if ((c.StatType.ToLower() == "questions" && mode != "Q") || (c.StatType.ToLower() == "requirement" && mode != "R") || c.StatType.ToLower() == "framework") { // do not include the label and data } else { labels.Add(c.StatType); data.Add(c.Value); } if (c.StatType == "Components") { comp = transformToChart(c); } if ((c.StatType == "Questions" && mode == "Q") || (c.StatType == "Requirement" && mode == "R")) { stand = transformToChart(c); } } ChartData overallBars = new ChartData() { backgroundColor = "red", borderWidth = "1", label = "overalls", Labels = labels, data = data }; ChartData red = new ChartData(); int rcount = 0; foreach (usp_getRankedCategories c in results.Result2) { if (rcount < 5) { red.data.Add((double)(c.prc ?? 0.0M)); red.Labels.Add(c.Question_Group_Heading); } else { break; } rcount++; } rval = new FirstPage() { OverallBars = overallBars, ComponentSummaryPie = comp, StandardsSummaryPie = stand, RedBars = red }; } } return(rval); }
public ChartData GetStandardsResultsByCategory() { int assessmentId = Auth.AssessmentForUser(); ChartData chartData = new ChartData(); using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[usp_getStandardsResultsByCategory]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <usp_getStandardsResultsByCategory>(); var labels = (from usp_getStandardsResultsByCategory an in result orderby an.Question_Group_Heading select an.Question_Group_Heading).Distinct().ToList(); chartData.DataRows = new List <DataRows>(); foreach (string c in labels) { // chartData.data.Add((double) c.prc); chartData.Labels.Add(c); // chartData.DataRows.Add(new DataRows() // { // failed =c.yaCount, // percent = c.prc, // total = c.Actualcr, // title = c.Question_Group_Heading // }); } ColorsList colors = new ColorsList(); var sets = (from usp_getStandardsResultsByCategory an in result select new { an.Set_Name, an.Short_Name }).Distinct(); foreach (var set in sets) { ChartData nextChartData = new ChartData(); chartData.dataSets.Add(nextChartData); nextChartData.DataRows = new List <DataRows>(); var nextSet = (from usp_getStandardsResultsByCategory an in result where an.Set_Name == set.Set_Name orderby an.Question_Group_Heading select an).ToList(); nextChartData.label = set.Short_Name; nextChartData.backgroundColor = colors.getNext(set.Set_Name); foreach (usp_getStandardsResultsByCategory c in nextSet) { nextChartData.data.Add((double)c.prc); nextChartData.Labels.Add(c.Question_Group_Heading); nextChartData.DataRows.Add(new DataRows() { failed = c.yaCount, percent = c.prc, total = c.Actualcr, title = c.Question_Group_Heading }); } } }); } return(chartData); }
public ChartData GetComponentsSummary() { int assessmentId = Auth.AssessmentForUser(); // initialize the response container ChartData chartData = new ChartData(); chartData.Colors = new List <string>(); chartData.DataRowsPie = new List <DataRowsPie>(); using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[usp_getComponentsSummary]") .WithSqlParam("assessment_Id", assessmentId) .ExecuteStoredProc((handler) => { var answerTotals = handler.ReadToList <usp_getComponentsSummmary>(); // re-order the list var sortedList = new List <usp_getComponentsSummmary>(); AddItem("Y", sortedList, answerTotals); AddItem("N", sortedList, answerTotals); AddItem("NA", sortedList, answerTotals); AddItem("A", sortedList, answerTotals); AddItem("U", sortedList, answerTotals); answerTotals = sortedList; var totalQuestionCount = answerTotals == null ? 0 : answerTotals.Sum(x => x.vcount); foreach (usp_getComponentsSummmary c in answerTotals) { // build DataRowsPie for each answer total DataRowsPie pie = new DataRowsPie(); pie.Answer_Full_Name = c.Answer_Full_Name; pie.Short_Name = ""; pie.Answer_Text = c.Answer_Text; pie.qc = c.vcount; pie.Total = totalQuestionCount; pie.Percent = (int)Math.Round(c.value, 0); chartData.DataRowsPie.Add(pie); chartData.data.Add((double)c.value); chartData.Labels.Add(c.Answer_Full_Name); if (!chartData.Colors.Contains(answerColorDefs[c.Answer_Text ?? "U"])) { chartData.Colors.Add(answerColorDefs[c.Answer_Text ?? "U"]); } } }); // include component count so front end can know whether components are present context.LoadStoredProc("[usp_getExplodedComponent]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { chartData.ComponentCount = handler.ReadToList <usp_getExplodedComponent>().Distinct().Count(); }); } chartData.dataSets.ForEach(ds => { ds.borderWidth = "0"; ds.borderColor = "transparent"; }); return(chartData); }
public HorizBarChart GetOverallAverages() { TokenManager tm = new TokenManager(); var aggregationID = tm.PayloadInt("aggreg"); if (aggregationID == null) { return(null); } var response = new HorizBarChart(); response.reportTitle = "Overall Average Summary"; Dictionary <string, List <double> > dict = new Dictionary <string, List <double> > { ["Questions"] = new List <double>(), ["Requirement"] = new List <double>(), ["Overall"] = new List <double>(), ["Components"] = new List <double>() }; using (CSET_Context db = new CSET_Context()) { var assessmentList = db.AGGREGATION_ASSESSMENT.Where(x => x.Aggregation_Id == aggregationID) .Include(x => x.Assessment_).OrderBy(x => x.Assessment_.Assessment_Date) .ToList(); foreach (var a in assessmentList) { db.LoadStoredProc("[GetCombinedOveralls]") .WithSqlParam("assessment_id", a.Assessment_Id) .ExecuteStoredProc((handler) => { var procResults = (List <GetCombinedOveralls>)handler.ReadToList <GetCombinedOveralls>(); foreach (var procResult in procResults) { if (dict.ContainsKey(procResult.StatType)) { dict[procResult.StatType].Add(procResult.Value); } } }); } var ds = new ChartDataSet(); response.datasets.Add(ds); response.labels.Add("Overall"); ds.data.Add((float)dict["Overall"].DefaultIfEmpty(0).Average()); response.labels.Add("Standards"); ds.data.Add( (float)dict["Questions"].DefaultIfEmpty(0).Average() + (float)dict["Requirement"].DefaultIfEmpty(0).Average()); response.labels.Add("Components"); ds.data.Add((float)dict["Components"].DefaultIfEmpty(0).Average()); return(response); } }
public FirstPage GetDashboard() { int assessmentId = Auth.AssessmentForUser(); FirstPage rval = null; using (CSET_Context context = new CSET_Context()) { var results = new FirstPageMultiResult(); context.LoadStoredProc("[usp_GetFirstPage]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { results.Result1 = handler.ReadToList <GetCombinedOveralls>().ToList(); handler.NextResult(); results.Result2 = handler.ReadToList <usp_getRankedCategories>().ToList(); }); if (results.Count >= 2) { // for the compliance graph List <Tuple <string, double> > compliance = new List <Tuple <string, double> >(); ChartData stand = null; ChartData comp = null; foreach (GetCombinedOveralls c in results.Result1) { string mode = this.GetAssessmentMode(assessmentId); string label = c.StatType; if (c.StatType == "Components") { comp = TransformToChart(c); } if ((c.StatType == "Questions" && mode == "Q") || (c.StatType == "Requirement" && mode == "R")) { stand = TransformToChart(c); label = stand.label; } if ((c.StatType.ToLower() == "overall") || (c.StatType.ToLower() == "components")) { compliance.Add(new Tuple <string, double>(c.StatType, c.Value)); } else if ((c.StatType.ToLower() == "questions" && mode == "Q") || (c.StatType.ToLower() == "requirement" && mode == "R")) { // Questions or Requirements are included only if we are in that 'mode', renamed as 'Standards' compliance.Add(new Tuple <string, double>("Standards", c.Value)); } } ChartData overallBars = new ChartData() { backgroundColor = "red", borderWidth = "1", label = "overalls" }; // order the compliance elements for display var complianceOrdered = new List <Tuple <string, double> >(); complianceOrdered.Add(compliance.First(x => x.Item1 == "Overall")); complianceOrdered.Add(compliance.First(x => x.Item1 == "Standards")); complianceOrdered.Add(compliance.First(x => x.Item1 == "Components")); foreach (var j in complianceOrdered) { overallBars.Labels.Add(j.Item1); overallBars.data.Add(j.Item2); } ChartData chartData = new ChartData(); foreach (usp_getRankedCategories c in results.Result2.Take(5)) { chartData.data.Add((double)(c.prc ?? 0.0M)); chartData.Labels.Add(c.Question_Group_Heading); } rval = new FirstPage() { OverallBars = overallBars, StandardsSummaryPie = stand, ComponentSummaryPie = comp, RedBars = chartData }; } } return(rval); }
public List <BestToWorstCategory> GetBestToWorst() { TokenManager tm = new TokenManager(); var aggregationID = tm.PayloadInt("aggreg"); if (aggregationID == null) { return(null); } Dictionary <string, List <GetComparisonBestToWorst> > dict = new Dictionary <string, List <GetComparisonBestToWorst> >(); using (CSET_Context db = new CSET_Context()) { var assessmentList = db.AGGREGATION_ASSESSMENT.Where(x => x.Aggregation_Id == aggregationID) .Include(x => x.Assessment_).OrderBy(x => x.Assessment_.Assessment_Date) .ToList(); var response = new List <BestToWorstCategory>(); foreach (var a in assessmentList) { db.LoadStoredProc("[GetComparisonBestToWorst]") .WithSqlParam("assessment_id", a.Assessment_Id) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <GetComparisonBestToWorst>(); foreach (var r in result) { r.AssessmentName = a.Alias; // tweak - make sure that rounding didn't end up with more than 100% var realAnswerPct = r.YesValue + r.NoValue + r.NaValue + r.AlternateValue; if (realAnswerPct + r.UnansweredValue > 100f) { r.UnansweredValue = 100f - realAnswerPct; } if (!dict.ContainsKey(r.Name)) { dict[r.Name] = new List <GetComparisonBestToWorst>(); } dict[r.Name].Add(r); } }); } // repackage the data var keys = dict.Keys.ToList(); keys.Sort(); foreach (string k in keys) { var category = new BestToWorstCategory() { Category = k, Assessments = dict[k] }; // sort best to worst category.Assessments.Sort((a, b) => (a.YesValue + a.AlternateValue).CompareTo(b.YesValue + b.AlternateValue)); category.Assessments.Reverse(); response.Add(category); } return(response); } }
private ChartData GetStandardsSummarySingle(CSET_Context context, int assessmentId) { ChartData myChartData = null; var results = new StandardSummaryOverallMultiResult(); context.LoadStoredProc("[usp_getStandardsSummaryPage]") .WithSqlParam("assessment_id", assessmentId) .ExecuteStoredProc((handler) => { results.Result1 = handler.ReadToList <DataRowsPie>().ToList(); }); if (results.Count >= 1) { SortIntoAnswerOrder(results); List <double> data = new List <double>(); List <String> Colors = new List <string>(); List <string> Labels = new List <string>(); List <DataRowsPie> rows = new List <DataRowsPie>(); myChartData = new ChartData(); Labels = new List <string>(); Dictionary <string, ChartData> charts = new Dictionary <string, ChartData>(); foreach (DataRowsPie c in results.Result1) { ChartData next; if (!charts.TryGetValue(c.Answer_Full_Name, out next)) { data = new List <double>(); next = new ChartData() { Colors = Colors, DataRowsPie = rows, borderWidth = "0", borderColor = "transparent", label = c.Answer_Full_Name, Labels = Labels, data = data }; charts.Add(c.Answer_Full_Name, next); } else { data = next.data; rows = next.DataRowsPie; } data.Add((double)(c.Percent ?? 0)); myChartData.data.Add((double)(c.Percent ?? 0)); if (!Colors.Contains(answerColorDefs[c.Answer_Text ?? "U"])) { Colors.Add(answerColorDefs[c.Answer_Text ?? "U"]); } Labels.Add(c.Answer_Full_Name); rows.Add(c); } myChartData.borderWidth = "0"; myChartData.borderColor = "transparent"; myChartData.label = "Standards Summary"; myChartData.Labels = Labels; myChartData.Colors = Colors; myChartData.DataRowsPie = rows; myChartData.DataRows = new List <DataRows>(); } myChartData.dataSets.ForEach(ds => { ds.borderWidth = "0"; ds.borderColor = "transparent"; }); return(myChartData); }
public HorizBarChart GetOverallComparison() { TokenManager tm = new TokenManager(); var aggregationID = tm.PayloadInt("aggreg"); if (aggregationID == null) { return(null); } var response = new HorizBarChart(); response.reportTitle = "Overall Comparison"; var statTypes = new List <string>() { "Overall", "Standards", "Components" }; response.labels.AddRange(statTypes); using (CSET_Context db = new CSET_Context()) { var assessmentList = db.AGGREGATION_ASSESSMENT.Where(x => x.Aggregation_Id == aggregationID) .Include(x => x.Assessment_).OrderBy(x => x.Assessment_.Assessment_Date) .ToList(); foreach (var a in assessmentList) { db.LoadStoredProc("[GetCombinedOveralls]") .WithSqlParam("assessment_id", a.Assessment_Id) .ExecuteStoredProc((handler) => { var result = handler.ReadToList <GetCombinedOveralls>(); var g = (List <GetCombinedOveralls>)result; Dictionary <string, double> dict = new Dictionary <string, double>(); dict["Standards"] = 0; foreach (GetCombinedOveralls row in g) { if (row.StatType == "Requirement" || row.StatType == "Questions") { dict["Standards"] += row.Value; } else { dict[row.StatType] = row.Value; } } var ds = new ChartDataSet { label = a.Alias }; response.datasets.Add(ds); foreach (var statType in statTypes) { ds.data.Add((float)dict[statType]); } }); } } return(response); }
public LineChart OverallComplianceScore() { TokenManager tm = new TokenManager(); var aggregationID = tm.PayloadInt("aggreg"); if (aggregationID == null) { return(null); } using (CSET_Context db = new CSET_Context()) { var assessmentList = db.AGGREGATION_ASSESSMENT.Where(x => x.Aggregation_Id == aggregationID) .Include(x => x.Assessment_) .Include(x => x.Assessment_.STANDARD_SELECTION) .OrderBy(x => x.Assessment_.Assessment_Date) .ToList(); // build the empty response structure for the assessments we have var response = new LineChart { reportType = "Trend Overall Compliance Score" }; List <string> lineNames = new List <string>() { "Overall", "Components", "Standards" }; foreach (string name in lineNames) { var ds = new ChartDataSet { label = name }; response.datasets.Add(ds); foreach (var a in assessmentList) { ds.data.Add(0); } } // populate percentages in the structure for (int i = 0; i < assessmentList.Count; i++) { var a = assessmentList[i]; response.labels.Add(a.Assessment_.Assessment_Date.ToString("d-MMM-yyyy")); db.LoadStoredProc("[GetCombinedOveralls]") .WithSqlParam("assessment_id", a.Assessment_Id) .ExecuteStoredProc((handler) => { var procResults = (List <GetCombinedOveralls>)handler.ReadToList <GetCombinedOveralls>(); foreach (var procResult in procResults) { var mode = a.Assessment_.STANDARD_SELECTION.Application_Mode; string stat = procResult.StatType; // funnel questions and requirements into 'standards' if assessment mode matches if ((mode.StartsWith("Questions") && procResult.StatType == "Questions") || (mode.StartsWith("Requirement") && procResult.StatType == "Requirement")) { stat = "Standards"; } var ds = response.datasets.Find(x => x.label == stat); if (ds != null) { ds.data[i] = (float)procResult.Value; } } }); } return(response); } }