public long Create(BusinessUnitKPIScorecard entity) { CommonHelper.ValidateArgumentNotNull(entity, nameof(entity)); Helper.ValidateTodayIsAllowedUpdateDate(entity.Year, entity.Month, InputAllowedInDays); int count = BusinessUnitKPIScorecardService.Search(new BusinessUnitKPIScorecardSearchCriteria { // use PageNumber=1 and PageSize=0 to get count only PageNumber = 1, BusinessUnitId = entity.BusinessUnit?.Id, YearId = entity.Year.Id, MonthId = entity.Month.Id }).TotalRecords; if (count > 0) { throw new BusinessProcessingException( "BusinessUnitKPIScorecard already exists for the given year and month."); } // populate audit fields PopulateAuditFields(entity, null, creating: true); return(BusinessUnitKPIScorecardService.Create(entity).Id); }
public void TestGetAccuracy() { // arrange long id = 1; // act BusinessUnitKPIScorecard result = instance.Get(id); // assert AssertResult(result); }
public BusinessUnitKPIScorecard Update(long id, BusinessUnitKPIScorecard entity) { CommonHelper.ValidateArgumentNotNull(entity, nameof(entity)); Helper.ValidateTodayIsAllowedUpdateDate(entity.Year, entity.Month, InputAllowedInDays); var existing = BusinessUnitKPIScorecardService.Get(id); if (!IsAdmin()) { Helper.ValidateStatusIsDraft(existing.Status); } // populate audit fields PopulateAuditFields(entity, existing); entity.Id = id; return(BusinessUnitKPIScorecardService.Update(entity)); }
public void TestUpdateAccuracy2() { // arrange BusinessUnitKPIScorecard entity = CreateTestEntity <BusinessUnitKPIScorecard>(3); entity.Id = 2; entity.OperationPerformanceScores = null; entity.BusinessContinuityPlanningScores = null; entity.ConcentrationRiskScores = null; entity.FinancialIndicatorScores = null; entity.SecurityScores = null; // act BusinessUnitKPIScorecard result = instance.Update(entity); // assert AssertEntityExists(entity); AssertResult(result); }
/// <summary> /// Asserts that the given entity exists in DB. /// </summary> /// <param name="entity">The entity to check.</param> protected static void AssertEntityExists(BusinessUnitKPIScorecard entity) { var parameters = new Dictionary <string, object>(); parameters["BusinessUnit_Id"] = entity.BusinessUnit?.Id; parameters["Status_Id"] = entity.Status?.Id; parameters["Year_Id"] = entity.Year?.Id; parameters["Month_Id"] = entity.Month?.Id; parameters["DueDate"] = entity.DueDate; parameters["CompletionType"] = entity.CompletionType; parameters["CreatedBy"] = entity.CreatedBy; parameters["CreatedTime"] = entity.CreatedTime; parameters["LastUpdatedBy"] = entity.LastUpdatedBy; parameters["LastUpdatedTime"] = entity.LastUpdatedTime; parameters["Id"] = entity.Id; TestHelper.AssertDatabaseRecordExists(typeof(BusinessUnitKPIScorecard).Name, parameters); AssertManyToManyMappings(entity.Id, entity.OperationPerformanceScores, "BusinessUnitKPIScorecard_OperationPerformanceScore", "BusinessUnitKPIScorecardId", "KPIVolumeScoreId"); AssertManyToManyMappings(entity.Id, entity.FinancialIndicatorScores, "BusinessUnitKPIScorecard_FinancialIndicatorScore", "BusinessUnitKPIScorecardId", "KPIScoreId"); AssertManyToManyMappings(entity.Id, entity.BusinessContinuityPlanningScores, "BusinessUnitKPIScorecard_BusinessContinuityPlanningScore", "BusinessUnitKPIScorecardId", "KPIScoreId"); AssertManyToManyMappings(entity.Id, entity.SecurityScores, "BusinessUnitKPIScorecard_SecurityScore", "BusinessUnitKPIScorecardId", "KPIScoreId"); AssertManyToManyMappings(entity.Id, entity.ConcentrationRiskScores, "BusinessUnitKPIScorecard_ConcentrationRiskScore", "BusinessUnitKPIScorecardId", "KPIScoreId"); }
public void TestUpdateAccuracy() { // arrange BusinessUnitKPIScorecard entity = CreateTestEntity <BusinessUnitKPIScorecard>(5); entity.Id = 2; entity.OperationPerformanceScores[0].Id = 14; entity.OperationPerformanceScores[1].Id = 11; // act BusinessUnitKPIScorecard result = instance.Update(entity); foreach (var item in result.BusinessContinuityPlanningScores) { item.Id = 0; } foreach (var item in result.ConcentrationRiskScores) { item.Id = 0; } foreach (var item in result.FinancialIndicatorScores) { item.Id = 0; } foreach (var item in result.OperationPerformanceScores) { item.Id = 0; } foreach (var item in result.SecurityScores) { item.Id = 0; } // assert AssertEntityExists(entity); AssertResult(result); }
/// <summary> /// Gets the statistics summary. /// </summary> /// /// <param name="businessUnitId">The business unit Id to get summary for.</param> /// <param name="yearId">The year Id to get summary for.</param> /// <param name="monthId">The month Id to get summary for.</param> /// <returns>The statistics summary.</returns> /// /// <exception cref="ArgumentException"> /// If any of the arguments is not positive. /// </exception> /// <exception cref="PersistenceException"> /// If error occurs while accessing the persistence. /// </exception> /// <exception cref="ServiceException"> /// If any other errors occur while performing this operation. /// </exception> public Summary GetSummary(long businessUnitId, long yearId, long monthId) { return(Logger.Process(() => { CommonHelper.ValidateArgumentPositive(businessUnitId, nameof(businessUnitId)); CommonHelper.ValidateArgumentPositive(yearId, nameof(yearId)); CommonHelper.ValidateArgumentPositive(monthId, nameof(monthId)); var summary = new Summary(); // get scorecard for the given parameters BusinessUnitKPIScorecard kpiScorecard = BusinessUnitKPIScorecardService.Search( new BusinessUnitKPIScorecardSearchCriteria { BusinessUnitId = businessUnitId, YearId = yearId, MonthId = monthId }).Items.FirstOrDefault(); if (kpiScorecard == null) { // indicate that there is no scorecard for given criteria return null; } summary.BusinessUnit = kpiScorecard.BusinessUnit; summary.Year = kpiScorecard.Year; summary.Month = kpiScorecard.Month; summary.Status = kpiScorecard.Status; summary.DueDate = kpiScorecard.DueDate; // Get the number of auditFindings, operationIncidents, and privacyIncidents for the given parameters summary.AuditFindingsNumber = AuditFindingService.Search( new AuditFindingSearchCriteria { // (!) Important: use PageNumber=1 and PageSize=0 to get count only, // otherwise there will be huge performance impact due to loading all entities PageNumber = 1, BusinessUnitId = businessUnitId, AuditYearId = yearId, AuditMonthId = monthId, }).TotalRecords; summary.OperationalIncidentsNumber = OperationalIncidentService.Search( new OperationalIncidentSearchCriteria { PageNumber = 1, BusinessUnitId = businessUnitId, IncidentYearId = yearId, IncidentMonthId = monthId }).TotalRecords; summary.PrivacyIncidentsNumber = PrivacyIncidentService.Search( new PrivacyIncidentSearchCriteria { PageNumber = 1, BusinessUnitId = businessUnitId, IncidentYearId = yearId, IncidentMonthId = monthId }).TotalRecords; // calculate overall scores summary.OperationalPerformanceOverallScore = GetOverallScore(kpiScorecard.OperationPerformanceScores); summary.SecurityOverallScore = GetOverallScore(kpiScorecard.SecurityScores); summary.ConcentrationRiskOverallScore = GetOverallScore(kpiScorecard.ConcentrationRiskScores); summary.BusinessContinuityPlanningOverallScore = GetOverallScore(kpiScorecard.BusinessContinuityPlanningScores); // get scorecards for the whole year IList <BusinessUnitKPIScorecard> kpiScorecards = BusinessUnitKPIScorecardService.Search( new BusinessUnitKPIScorecardSearchCriteria { BusinessUnitId = businessUnitId, YearId = yearId }).Items; summary.OverallThresholdAnalysis = new OverallThresholdAnalysis { OperationalPerformanceValues = new List <OverallThresholdAnalysisMonthValue>(), BusinessContinuityPlanningValues = new List <OverallThresholdAnalysisMonthValue>(), ConcentrationRiskValues = new List <OverallThresholdAnalysisMonthValue>(), SecurityValues = new List <OverallThresholdAnalysisMonthValue>() }; // calculate overall score for every scorecard foreach (var scorecard in kpiScorecards) { summary.OverallThresholdAnalysis.BusinessContinuityPlanningValues.Add( GetAnalysisMonthValue(scorecard.Month, scorecard.BusinessContinuityPlanningScores)); summary.OverallThresholdAnalysis.ConcentrationRiskValues.Add( GetAnalysisMonthValue(scorecard.Month, scorecard.ConcentrationRiskScores)); summary.OverallThresholdAnalysis.OperationalPerformanceValues.Add( GetAnalysisMonthValue(scorecard.Month, scorecard.OperationPerformanceScores)); summary.OverallThresholdAnalysis.SecurityValues.Add( GetAnalysisMonthValue(scorecard.Month, scorecard.SecurityScores)); } return summary; }, "retrieving summary", parameters: new object[] { businessUnitId, yearId, monthId })); }