Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        /// <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);
        }
Ejemplo n.º 12
0
        /// <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");
        }
Ejemplo n.º 13
0
        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);
            }
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        /// <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);
        }
Ejemplo n.º 16
0
        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);
            }
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        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);
            }
        }
Ejemplo n.º 25
0
        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);
        }
Ejemplo n.º 26
0
        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);
            }
        }
Ejemplo n.º 27
0
        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);
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
        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);
            }
        }