/// <summary> /// Persists data to the ASSESSMENTS and INFORMATION tables. /// Date fields should be converted to UTC before sending the Assessment /// to this method. /// </summary> /// <param name="assessment"></param> /// <returns></returns> public int SaveAssessmentDetail(int assessmentId, AssessmentDetail assessment) { var db = new DataLayerCore.Model.CSET_Context(); TokenManager tm = new TokenManager(); string app_code = tm.Payload(Constants.Token_Scope); // Add or update the ASSESSMENT record var dbAssessment = new ASSESSMENTS() { Assessment_Id = assessment.Id, AssessmentCreatedDate = assessment.CreatedDate, AssessmentCreatorId = assessment.CreatorId, Assessment_Date = assessment.AssessmentDate ?? DateTime.Now, LastAccessedDate = assessment.LastModifiedDate, Charter = string.IsNullOrEmpty(assessment.Charter) ? string.Empty : assessment.Charter.PadLeft(5, '0'), CreditUnionName = assessment.CreditUnion, Assets = assessment.Assets, MatDetail_targetBandOnly = app_code == "ACET" }; db.ASSESSMENTS.AddOrUpdate(dbAssessment, x => x.Assessment_Id); db.SaveChanges(); assessmentId = dbAssessment.Assessment_Id; var user = db.USERS.FirstOrDefault(x => x.UserId == dbAssessment.AssessmentCreatorId); // then use its key for the INFORMATION record var dbInfo = new INFORMATION { Id = assessmentId, Assessment_Name = assessment.AssessmentName, Facility_Name = assessment.FacilityName, City_Or_Site_Name = assessment.CityOrSiteName, State_Province_Or_Region = assessment.StateProvRegion, Executive_Summary = assessment.ExecutiveSummary, Assessment_Description = assessment.AssessmentDescription, Additional_Notes_And_Comments = assessment.AdditionalNotesAndComments, IsAcetOnly = assessment.IsAcetOnly }; db.INFORMATION.AddOrUpdate(dbInfo, x => x.Id); db.SaveChanges(); AssessmentUtil.TouchAssessment(assessmentId); return(dbInfo.Id); }
/// <summary> /// Persists data to the ASSESSMENTS and INFORMATION tables. /// Date fields should be converted to UTC before sending the Assessment /// to this method. /// </summary> /// <param name="assessment"></param> /// <returns></returns> public int SaveAssessmentDetail(int assessmentId, AssessmentDetail assessment) { var db = new DataLayerCore.Model.CSET_Context(); // Add or update the ASSESSMENT record var dbAssessment = new ASSESSMENTS() { Assessment_Id = assessment.Id, AssessmentCreatedDate = assessment.CreatedDate, AssessmentCreatorId = assessment.CreatorId, Assessment_Date = assessment.AssessmentDate ?? DateTime.Now, LastAccessedDate = assessment.LastModifiedDate, Charter = assessment.Charter, CreditUnionName = assessment.CreditUnion, Assets = assessment.Assets }; db.ASSESSMENTS.AddOrUpdate(dbAssessment, x => x.Assessment_Id); db.SaveChanges(); assessmentId = dbAssessment.Assessment_Id; var user = db.USERS.FirstOrDefault(x => x.UserId == dbAssessment.AssessmentCreatorId); // then use its key for the INFORMATION record var dbInfo = new INFORMATION { Id = assessmentId, Assessment_Name = assessment.AssessmentName, Facility_Name = assessment.FacilityName, City_Or_Site_Name = assessment.CityOrSiteName, State_Province_Or_Region = assessment.StateProvRegion, Executive_Summary = assessment.ExecutiveSummary, Assessment_Description = assessment.AssessmentDescription, Additional_Notes_And_Comments = assessment.AdditionalNotesAndComments }; db.INFORMATION.AddOrUpdate(dbInfo, x => x.Id); db.SaveChanges(); AssessmentUtil.TouchAssessment(assessmentId); return(dbInfo.Id); }
/// <summary> /// Create new headers for IRP calculations /// </summary> /// <param name="assessmentId"></param> public void CreateIrpHeaders(int assessmentId) { int idOffset = 1; using (var db = new CSET_Context()) { // now just properties on an Assessment ASSESSMENTS assessment = db.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId); foreach (IRP_HEADER header in db.IRP_HEADER) { IRPSummary summary = new IRPSummary(); summary.HeaderText = header.Header; ASSESSMENT_IRP_HEADER headerInfo = db.ASSESSMENT_IRP_HEADER.FirstOrDefault(h => h.IRP_HEADER_.IRP_Header_Id == header.IRP_Header_Id && h.ASSESSMENT_.Assessment_Id == assessmentId); summary.RiskLevel = 0; headerInfo = new ASSESSMENT_IRP_HEADER() { RISK_LEVEL = 0, IRP_HEADER_ = header }; headerInfo.ASSESSMENT_ = assessment; if (db.ASSESSMENT_IRP_HEADER.Count() == 0) { headerInfo.HEADER_RISK_LEVEL_ID = header.IRP_Header_Id; } else { headerInfo.HEADER_RISK_LEVEL_ID = db.ASSESSMENT_IRP_HEADER.Max(i => i.HEADER_RISK_LEVEL_ID) + idOffset; idOffset++; } summary.RiskLevelId = headerInfo.HEADER_RISK_LEVEL_ID ?? 0; db.ASSESSMENT_IRP_HEADER.Add(headerInfo); } db.SaveChanges(); } }
public void UpdateACETDashboardSummary(int assessmentId, ACETDashboard summary) { if (assessmentId == 0 || summary == null) { return; } using (var db = new CSET_Context()) { ASSESSMENTS assessment = db.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId); if (assessment != null) { assessment.CreditUnionName = summary.CreditUnionName; assessment.Charter = summary.Charter; assessment.Assets = summary.Assets; assessment.IRPTotalOverride = summary.Override; assessment.IRPTotalOverrideReason = summary.OverrideReason; } foreach (IRPSummary irp in summary.IRPs) { ASSESSMENT_IRP_HEADER dbSummary = db.ASSESSMENT_IRP_HEADER.FirstOrDefault(s => s.ASSESSMENT_ID == assessment.Assessment_Id && s.HEADER_RISK_LEVEL_ID == irp.RiskLevelId); if (dbSummary != null) { dbSummary.RISK_LEVEL = irp.RiskLevel; dbSummary.COMMENT = irp.Comment; } // the else should never happen else { return; } } db.SaveChanges(); } }
/// <summary> /// Persists data to the ASSESSMENTS and INFORMATION tables. /// Date fields should be converted to UTC before sending the Assessment /// to this method. /// </summary> /// <param name="assessment"></param> /// <returns></returns> public int SaveAssessmentDetail(int assessmentId, AssessmentDetail assessment) { using (var db = new DataLayerCore.Model.CSET_Context()) { TokenManager tm = new TokenManager(); string app_code = tm.Payload(Constants.Token_Scope); // Add or update the ASSESSMENTS record var dbAssessment = db.ASSESSMENTS.Where(x => x.Assessment_Id == assessmentId).FirstOrDefault(); if (dbAssessment == null) { dbAssessment = new ASSESSMENTS(); db.ASSESSMENTS.Add(dbAssessment); db.SaveChanges(); assessmentId = dbAssessment.Assessment_Id; } dbAssessment.Assessment_Id = assessmentId; dbAssessment.AssessmentCreatedDate = assessment.CreatedDate; dbAssessment.AssessmentCreatorId = assessment.CreatorId; dbAssessment.Assessment_Date = assessment.AssessmentDate ?? DateTime.Now; dbAssessment.LastAccessedDate = assessment.LastModifiedDate; dbAssessment.Charter = string.IsNullOrEmpty(assessment.Charter) ? string.Empty : assessment.Charter.PadLeft(5, '0'); dbAssessment.CreditUnionName = assessment.CreditUnion; dbAssessment.Assets = assessment.Assets; dbAssessment.MatDetail_targetBandOnly = (app_code == "ACET"); dbAssessment.AnalyzeDiagram = false; db.ASSESSMENTS.AddOrUpdate(dbAssessment, x => x.Assessment_Id); db.SaveChanges(); var user = db.USERS.FirstOrDefault(x => x.UserId == dbAssessment.AssessmentCreatorId); var dbInformation = db.INFORMATION.Where(x => x.Id == assessmentId).FirstOrDefault(); if (dbInformation == null) { dbInformation = new INFORMATION() { Id = assessmentId }; } // add or update the INFORMATION record dbInformation.Assessment_Name = assessment.AssessmentName; dbInformation.Facility_Name = assessment.FacilityName; dbInformation.City_Or_Site_Name = assessment.CityOrSiteName; dbInformation.State_Province_Or_Region = assessment.StateProvRegion; dbInformation.Executive_Summary = assessment.ExecutiveSummary; dbInformation.Assessment_Description = assessment.AssessmentDescription; dbInformation.Additional_Notes_And_Comments = assessment.AdditionalNotesAndComments; dbInformation.IsAcetOnly = assessment.IsAcetOnly; db.INFORMATION.AddOrUpdate(dbInformation, x => x.Id); db.SaveChanges(); AssessmentUtil.TouchAssessment(assessmentId); return(assessmentId); } }
/// <summary> /// Get all IRP calculations for display /// </summary> /// <param name="assessmentId"></param> /// <returns></returns> public ACETDashboard GetIrpCalculation(int assessmentId) { ACETDashboard result = new ACETDashboard(); int idOffset = 1; using (var db = new CSET_Context()) { // now just properties on an Assessment ASSESSMENTS assessment = db.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId); if (assessment == null) { return(null); } result.CreditUnionName = assessment.CreditUnionName; result.Charter = assessment.Charter; result.Assets = assessment.Assets; result.Hours = (new AdminTabManager()).GetTabData(assessmentId).GrandTotal; //IRP Section result.Override = assessment.IRPTotalOverride ?? 0; result.OverrideReason = assessment.IRPTotalOverrideReason; foreach (IRP_HEADER header in db.IRP_HEADER) { IRPSummary summary = new IRPSummary(); summary.HeaderText = header.Header; ASSESSMENT_IRP_HEADER headerInfo = db.ASSESSMENT_IRP_HEADER.FirstOrDefault(h => h.IRP_HEADER_.IRP_Header_Id == header.IRP_Header_Id && h.ASSESSMENT_.Assessment_Id == assessmentId); if (headerInfo != null) { summary.RiskLevelId = headerInfo.HEADER_RISK_LEVEL_ID ?? 0; summary.RiskLevel = headerInfo.RISK_LEVEL.Value; summary.Comment = headerInfo.COMMENT; } List <IRP> irps = db.IRP.Where(i => i.Header_Id == header.IRP_Header_Id).ToList(); Dictionary <int, ASSESSMENT_IRP> dictionaryIRPS = db.ASSESSMENT_IRP.Where(x => x.Assessment_Id == assessmentId).ToDictionary(x => x.IRP_Id, x => x); foreach (IRP irp in irps) { ASSESSMENT_IRP answer = null; dictionaryIRPS.TryGetValue(irp.IRP_ID, out answer); //ASSESSMENT_IRP answer = irp.ASSESSMENT_IRP.FirstOrDefault(i => i.Assessment_.Assessment_Id == assessmentId); if (answer != null && answer.Response != 0) { summary.RiskCount[answer.Response.Value - 1]++; summary.RiskSum++; result.SumRisk[answer.Response.Value - 1]++; result.SumRiskTotal++; } } result.IRPs.Add(summary); } //go back through the IRPs and calculate the Risk Level for each section foreach (IRPSummary irp in result.IRPs) { int MaxRisk = 0; irp.RiskLevel = 0; for (int i = 0; i < irp.RiskCount.Length; i++) { if (irp.RiskCount[i] >= MaxRisk && irp.RiskCount[i] > 0) { MaxRisk = irp.RiskCount[i]; irp.RiskLevel = i + 1; } } } db.SaveChanges(); result.SumRiskLevel = 1; int maxRisk = 0; for (int i = 0; i < result.SumRisk.Length; i++) { if (result.SumRisk[i] >= maxRisk && result.SumRisk[i] > 0) { result.SumRiskLevel = i + 1; maxRisk = result.SumRisk[i]; } } } return(result); }
public ACETDashboard LoadDashboard(int assessmentId) { ACETDashboard result = new ACETDashboard(); int idOffset = 1; using (var db = new CSET_Context()) { // now just properties on an Assessment ASSESSMENTS assessment = db.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId); if (assessment == null) { return(null); } result.CreditUnionName = assessment.CreditUnionName; result.Charter = assessment.Charter; result.Assets = assessment.Assets; result.Hours = (new AdminTabManager()).GetTabData(assessmentId).GrandTotal; //IRP Section result.Override = assessment.IRPTotalOverride ?? 0; result.OverrideReason = assessment.IRPTotalOverrideReason; foreach (IRP_HEADER header in db.IRP_HEADER) { IRPSummary summary = new IRPSummary(); summary.HeaderText = header.Header; ASSESSMENT_IRP_HEADER headerInfo = db.ASSESSMENT_IRP_HEADER.FirstOrDefault(h => h.IRP_Header_.IRP_Header_Id == header.IRP_Header_Id && h.Assessment_.Assessment_Id == assessmentId); if (headerInfo != null) { summary.RiskLevelId = headerInfo.Header_Risk_Level_Id ?? 0; summary.RiskLevel = headerInfo.Risk_Level.Value; summary.Comment = headerInfo.Comment; } else { summary.RiskLevel = 0; headerInfo = new ASSESSMENT_IRP_HEADER() { Risk_Level = 0, IRP_Header_ = header }; headerInfo.Assessment_ = assessment; if (db.ASSESSMENT_IRP_HEADER.Count() == 0) { headerInfo.Header_Risk_Level_Id = header.IRP_Header_Id; } else { headerInfo.Header_Risk_Level_Id = db.ASSESSMENT_IRP_HEADER.Max(i => i.Header_Risk_Level_Id) + idOffset; idOffset++; } summary.RiskLevelId = headerInfo.Header_Risk_Level_Id ?? 0; db.ASSESSMENT_IRP_HEADER.Add(headerInfo); } List <IRP> irps = db.IRP.Where(i => i.Header_Id == header.IRP_Header_Id).ToList(); foreach (IRP irp in irps) { ASSESSMENT_IRP answer = db.ASSESSMENT_IRP.FirstOrDefault(a => a.IRP_Id == irp.IRP_ID && a.Assessment_Id == assessmentId); //ASSESSMENT_IRP answer = irp.ASSESSMENT_IRP.FirstOrDefault(i => i.Assessment_.Assessment_Id == assessmentId); if (answer != null && answer.Response != 0) { summary.RiskCount[answer.Response.Value - 1]++; summary.RiskSum++; result.SumRisk[answer.Response.Value - 1]++; result.SumRiskTotal++; } } result.IRPs.Add(summary); } //go back through the IRPs and calculate the Risk Level for each section foreach (IRPSummary irp in result.IRPs) { int MaxRisk = 0; irp.RiskLevel = 0; for (int i = 0; i < irp.RiskCount.Length; i++) { if (irp.RiskCount[i] >= MaxRisk && irp.RiskCount[i] > 0) { MaxRisk = irp.RiskCount[i]; irp.RiskLevel = i + 1; } } } db.SaveChanges(); result.SumRiskLevel = 1; int maxRisk = 0; for (int i = 0; i < result.SumRisk.Length; i++) { if (result.SumRisk[i] >= maxRisk && result.SumRisk[i] > 0) { result.SumRiskLevel = i + 1; maxRisk = result.SumRisk[i]; } } } result.Domains = new List <DashboardDomain>(); MaturityManager matManager = new MaturityManager(); List <MaturityDomain> domains = matManager.GetMaturityAnswers(assessmentId); foreach (var d in domains) { result.Domains.Add(new DashboardDomain { Maturity = d.DomainMaturity, Name = d.DomainName }); } return(result); }
/// <summary> /// Persists data to the ASSESSMENTS and INFORMATION tables. /// Date fields should be converted to UTC before sending the Assessment /// to this method. /// </summary> /// <param name="assessment"></param> /// <returns></returns> public int SaveAssessmentDetail(int assessmentId, AssessmentDetail assessment) { using (var db = new DataLayerCore.Model.CSET_Context()) { TokenManager tm = new TokenManager(); string app_code = tm.Payload(Constants.Token_Scope); // Add or update the ASSESSMENTS record var dbAssessment = db.ASSESSMENTS.Where(x => x.Assessment_Id == assessmentId).FirstOrDefault(); if (dbAssessment == null) { dbAssessment = new ASSESSMENTS(); db.ASSESSMENTS.Add(dbAssessment); db.SaveChanges(); assessmentId = dbAssessment.Assessment_Id; } dbAssessment.Assessment_Id = assessmentId; dbAssessment.AssessmentCreatedDate = assessment.CreatedDate; dbAssessment.AssessmentCreatorId = assessment.CreatorId; dbAssessment.Assessment_Date = assessment.AssessmentDate ?? DateTime.Now; dbAssessment.LastAccessedDate = assessment.LastModifiedDate; dbAssessment.UseDiagram = assessment.UseDiagram; dbAssessment.UseMaturity = assessment.UseMaturity; dbAssessment.UseStandard = assessment.UseStandard; dbAssessment.Charter = string.IsNullOrEmpty(assessment.Charter) ? string.Empty : assessment.Charter.PadLeft(5, '0'); dbAssessment.CreditUnionName = assessment.CreditUnion; dbAssessment.Assets = assessment.Assets; dbAssessment.MatDetail_targetBandOnly = (app_code == "ACET"); dbAssessment.Diagram_Markup = assessment.DiagramMarkup; dbAssessment.Diagram_Image = assessment.DiagramImage; dbAssessment.AnalyzeDiagram = false; db.ASSESSMENTS.AddOrUpdate(dbAssessment, x => x.Assessment_Id); db.SaveChanges(); var user = db.USERS.FirstOrDefault(x => x.UserId == dbAssessment.AssessmentCreatorId); var dbInformation = db.INFORMATION.Where(x => x.Id == assessmentId).FirstOrDefault(); if (dbInformation == null) { dbInformation = new INFORMATION() { Id = assessmentId }; } // add or update the INFORMATION record dbInformation.Assessment_Name = assessment.AssessmentName; dbInformation.Facility_Name = assessment.FacilityName; dbInformation.City_Or_Site_Name = assessment.CityOrSiteName; dbInformation.State_Province_Or_Region = assessment.StateProvRegion; dbInformation.Executive_Summary = assessment.ExecutiveSummary; dbInformation.Assessment_Description = assessment.AssessmentDescription; dbInformation.Additional_Notes_And_Comments = assessment.AdditionalNotesAndComments; dbInformation.IsAcetOnly = assessment.IsAcetOnly; db.INFORMATION.AddOrUpdate(dbInformation, x => x.Id); db.SaveChanges(); if (assessment.UseMaturity) { SalManager salManager = new SalManager(); salManager.SetDefaultSAL_IfNotSet(assessmentId); //this is at the bottom deliberatly because //we want everything else to succeed first MaturityManager mm = new MaturityManager(); mm.PersistSelectedMaturityModel(assessmentId, "CMMC"); if (mm.GetMaturityLevel(assessmentId) == 0) { mm.PersistMaturityLevel(assessmentId, 1); } } AssessmentUtil.TouchAssessment(assessmentId); return(assessmentId); } }