コード例 #1
0
ファイル: AssessmentManager.cs プロジェクト: tkuennen/cset
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
ファイル: AssessmentManager.cs プロジェクト: tmcmil/cset
        /// <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();
            }
        }
コード例 #4
0
        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();
            }
        }
コード例 #5
0
ファイル: AssessmentManager.cs プロジェクト: tmcmil/cset
        /// <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);
            }
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        /// <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);
            }
        }