public IEnumerable <FileDescriptionShort> GetAllFiles() { int assessmentId = Auth.AssessmentForUser(); return(_fileRepository.GetAllFiles(assessmentId)); }
public HttpResponseMessage Download(string token) { int _assessmentId = Auth.AssessmentForUser(token); var result = new HttpResponseMessage(HttpStatusCode.OK); // determine the file extension based on the application TokenManager tm = new TokenManager(token); string appCode = tm.Payload("scope"); string filename = ExportAssessment.GetFileExtension(appCode); using (CSET_Context context = new CSET_Context()) { string assessmentName = context.INFORMATION.Where(x => x.Id == _assessmentId).FirstOrDefault().Assessment_Name; if (assessmentName != null) { filename = assessmentName + filename; } ExportAssessment export = new ExportAssessment(context); var exportCopy = export.CopyForExport(_assessmentId); MemoryStream zipToOpen = new MemoryStream(); ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create, true); foreach (var standard in exportCopy.jAVAILABLE_STANDARDS) { var set = context.SETS .Include(s => s.NEW_QUESTION) .Include(s => s.NEW_REQUIREMENT) .Include(s => s.Set_Category_) .FirstOrDefault(s => s.Set_Name == standard.Set_Name && standard.Selected); if (set != null) { if (set.Is_Custom) { //Export Set var externalSet = set.ToExternalStandard(); var setname = Regex.Replace(externalSet.ShortName, @"\W", "_"); ZipArchiveEntry standardEntry = archive.CreateEntry(setname + ".json"); string jsonStandard = JsonConvert.SerializeObject(externalSet, Formatting.Indented); using (StreamWriter writer = new StreamWriter(standardEntry.Open())) { writer.Write(jsonStandard); writer.Close(); } //Set the GUID at time of export so we are sure it's right!!! exportCopy.jANSWER = exportCopy.jANSWER.Where(s => s.Is_Requirement).GroupJoin(set.NEW_REQUIREMENT, s => s.Question_Or_Requirement_Id, s => s.Requirement_Id, (t, s) => { var req = s.FirstOrDefault(); if (req != null) { t.Custom_Question_Guid = new Guid(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(externalSet.ShortName + "|||" + req.Requirement_Title + "|||" + req.Requirement_Text))).ToString(); } return(t); }).Concat(exportCopy.jANSWER.Where(s => !s.Is_Requirement).GroupJoin(set.NEW_QUESTION, s => s.Question_Or_Requirement_Id, s => s.Question_Id, (t, s) => { var req = s.FirstOrDefault(); if (req != null) { t.Custom_Question_Guid = new Guid(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(req.Simple_Question))).ToString(); } return(t); })).ToList(); exportCopy.CustomStandards.Add(setname); var files = externalSet.Requirements.SelectMany(s => s.References.Concat(new List <ExternalResource> { s.Source })).Distinct(); foreach (var file in files) { var genFile = context.GEN_FILE.FirstOrDefault(s => s.File_Name == file.FileName && s.Is_Uploaded == true); if (genFile != null && !exportCopy.CustomStandardDocs.Any(s => s == file.FileName)) { var doc = genFile.ToExternalDocument(); ZipArchiveEntry docEntry = archive.CreateEntry(doc.ShortName + ".json"); string jsonDoc = JsonConvert.SerializeObject(doc, Formatting.Indented); using (StreamWriter writer = new StreamWriter(docEntry.Open())) { writer.Write(jsonDoc); writer.Close(); } exportCopy.CustomStandardDocs.Add(file.FileName); } } } } } string json = JsonConvert.SerializeObject(exportCopy, Formatting.Indented); ZipArchiveEntry modelEntry = archive.CreateEntry("model.json"); using (StreamWriter writer = new StreamWriter(modelEntry.Open())) { writer.Write(json); writer.Close(); } foreach (var doc in context.DOCUMENT_FILE.Where(x => x.Assessment_Id == _assessmentId && x.Data != null)) { ZipArchiveEntry dest = archive.CreateEntry(doc.Path); Stream destStream = dest.Open(); destStream.Write(doc.Data, 0, doc.Data.Length); destStream.Close(); } archive.Dispose(); zipToOpen.Seek(0, SeekOrigin.Begin); result.Content = new StreamContent(zipToOpen); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); result.Content.Headers.Add("content-disposition", "attachment; filename=\"" + filename + "\""); return(result); } }
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("[dbo].[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 ChartData GetStandardsResultsByCategory() { int assessmentId = Auth.AssessmentForUser(); ChartData chartData = new ChartData(); using (CSET_Context context = new CSET_Context()) { context.LoadStoredProc("[dbo].[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("[dbo].[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 chartData.ComponentCount = context.Answer_Components_Exploded.Where(a => a.Assessment_Id == assessmentId).Distinct().Count(); } chartData.dataSets.ForEach(ds => { ds.borderWidth = "0"; ds.borderColor = "transparent"; }); return(chartData); }
public FeedbackDisplayContainer getFeedback() { int assessmentId = Auth.AssessmentForUser(); RequirementsManager rm = new RequirementsManager(assessmentId); FeedbackDisplayContainer FeedbackResult = new FeedbackDisplayContainer(); string AssessmentMode = GetAssessmentMode(assessmentId); try { using (CSET_Context context = new CSET_Context()) { var QuestionsWithFeedbackList = from a in context.Answer_Standards_InScope where a.assessment_id == assessmentId && a.mode == AssessmentMode && a.FeedBack != null select a; if (QuestionsWithFeedbackList.Count() == 0) { FeedbackResult.FeedbackBody = "No feedback given for this assessment"; return(FeedbackResult); } string FeedbackSalutations = "Dear PED Module Administrator:"; string FeedbackDescription = "The following comments were provided for each of the questions: "; string FeedbackWarning = " *** Required *** Keep This Question ID ***"; bool FaaMail = context.AVAILABLE_STANDARDS.Where(x => x.Assessment_Id == assessmentId && x.Selected == true && (x.Set_Name == "FAA_MAINT" || x.Set_Name == "FAA")).FirstOrDefault() != null; FeedbackResult.FeedbackHeader = "Submit Feedback to DHS"; if (FaaMail) { FeedbackResult.FeedbackHeader += " and FAA"; } string FaaEmail = "*****@*****.**"; string DHSEmail = "*****@*****.**"; if (FaaMail) { FeedbackResult.FeedbackEmailTo = FaaEmail + "; "; } FeedbackResult.FeedbackEmailTo += DHSEmail; FeedbackResult.FeedbackBody = "Please email to: <br/><br/>"; FeedbackResult.FeedbackBody += FeedbackResult.FeedbackEmailTo + "<br/><br/><br/>"; FeedbackResult.FeedbackBody += FeedbackSalutations + "<br/><br/>"; FeedbackResult.FeedbackBody += FeedbackDescription + "<br/><br/>"; foreach (Answer_Standards_InScope q in QuestionsWithFeedbackList) { q.Question_Text = rm.ResolveParameters(q.question_or_requirement_id, q.answer_id, q.Question_Text); q.FeedBack = rm.ResolveParameters(q.question_or_requirement_id, q.answer_id, q.FeedBack); FeedbackResult.FeedbackBody += "Users Feedback: <br/>" + q.FeedBack + "<br/><br/>"; FeedbackResult.FeedbackBody += q.Question_Text + "<br/><br/>"; FeedbackResult.FeedbackBody += FeedbackWarning + "<br/>"; FeedbackResult.FeedbackBody += "Question #" + " " + q.mode + ":" + q.question_or_requirement_id + ". <br/><br/><br/>"; } FeedbackResult.FeedbackEmailSubject = "CSET Questions Feedback"; FeedbackResult.FeedbackEmailBody += FeedbackSalutations + "%0D%0A%0D%0A"; FeedbackResult.FeedbackEmailBody += FeedbackDescription + "%0D%0A%0D%0A"; foreach (Answer_Standards_InScope q in QuestionsWithFeedbackList) { q.Question_Text = rm.RichTextParameters(q.question_or_requirement_id, q.answer_id, q.Question_Text); q.FeedBack = rm.RichTextParameters(q.question_or_requirement_id, q.answer_id, q.FeedBack); FeedbackResult.FeedbackEmailBody += "Users Feedback: %0D%0A" + q.FeedBack + "%0D%0A"; FeedbackResult.FeedbackEmailBody += q.Question_Text + "%0D%0A%0D%0A"; FeedbackResult.FeedbackEmailBody += FeedbackWarning + "%0D%0A"; FeedbackResult.FeedbackEmailBody += "Question #" + " " + q.mode + ":" + q.question_or_requirement_id + ". %0D%0A%0D%0A%0D%0A"; } return(FeedbackResult); } } catch (Exception e) { throw e; } }
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) { // 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); }