/// <summary> /// Retrieves counter measure details of selected counter measure /// </summary> /// <param name="counterMeasureId">Counter Measure Id</param> /// <returns>Counter Measure DTO</returns> public CounterMeasureItem GetCounterMeasure(int counterMeasureId) { var counterMeasure = counterMeasureRepository.Get(counterMeasureId); if (counterMeasure != null) { return(CounterMeasureConverters. ConvertCounterMeasureToCounterMeasureItemDTO(counterMeasure)); } return(null); }
/// <summary> /// Retrieves all counter measures related to a KPI of a particular scorecard for /// an year /// </summary> /// <param name="scorecardId">Scorecard Identifier</param> /// <param name="kpiId">KPI Identifier</param> /// <returns>All Counter Measures related to the KPI</returns> public IEnumerable <CounterMeasureItem> GetCounterMeasures(int scorecardId, int kpiId, bool isShowClosed) { DateTime currentDate = TimeZoneUtility.GetCurrentTimestamp().Date; // get all counter measures except the confirmed counter measure if isShowClosed is false // otherwise get all counter measures var counterMeasures = counterMeasureRepository.GetAll() .Where(x => x.ScorecardId == scorecardId && x.KPIId == kpiId && x.CounterMeasureStatusId != (isShowClosed ? -1 : Constants.CounterMeasureStatusConfirmed)) .OrderByDescending(x => x.CreatedOn) .ToList().Select(x => CounterMeasureConverters. ConvertCounterMeasureToCounterMeasureItemDTO(x)); return(counterMeasures.ToList()); }
/// <summary> /// Add a new counter measure for a metric which belongs to a score card and KPI /// </summary> /// <param name="counterMeasureRequest">new counter measure entry</param> /// <param name="userName">Logged in user name</param> public void AddCounterMeasure(CounterMeasureAddRequest counterMeasureRequest, string userName) { ValidateCounterMeasureDueDate(counterMeasureRequest.DueDate); // Get logged in user id int loggedInUserId = userRepository.GetAll().FirstOrDefault( x => x.AccountName == userName).Id; // If the assigned user is not added to NDMS users table, add it here var assignedUserIds = userRepository.AddADUsersToNDMS(new List <string>() { counterMeasureRequest.AssignedTo }); var counterMeasure = new CounterMeasure() { ScorecardId = counterMeasureRequest.ScorecardId.Value, KPIId = counterMeasureRequest.KPIId.Value, MetricId = counterMeasureRequest.MetricId.Value, Issue = counterMeasureRequest.Issue, Action = counterMeasureRequest.Action, AssignedTo = assignedUserIds.First(), DueDate = counterMeasureRequest.DueDate, CounterMeasureStatusId = counterMeasureRequest.CounterMeasureStatusId.Value, CounterMeasurePriorityId = counterMeasureRequest.CounterMeasurePriorityId != null ? counterMeasureRequest.CounterMeasurePriorityId.Value: (int?)null, CreatedBy = loggedInUserId, LastModifiedBy = loggedInUserId, CreatedOn = TimeZoneUtility.GetCurrentTimestamp(), LastModifiedOn = TimeZoneUtility.GetCurrentTimestamp(), CounterMeasureComments = !string.IsNullOrEmpty(counterMeasureRequest.Comment) ? new List <CounterMeasureComment>() { CounterMeasureConverters. ConvertCommentToCounterMeasureComment(counterMeasureRequest.Comment, loggedInUserId) } : null }; counterMeasureRepository.AddOrUpdate(counterMeasure); counterMeasureRepository.Save(); }
/// <summary> /// Method to update existing counter measure /// </summary> /// <param name="counterMeasureRequest">counter measure to be updated</param> /// <param name="userName">logged in user name</param> public void EditCounterMeasure(CounterMeasureEditRequest counterMeasureRequest, string userName) { //get counter measure entity based on counter measure id var existingCounterMeasure = counterMeasureRepository.Get (counterMeasureRequest.CounterMeasureId.Value); if (existingCounterMeasure != null) { if (existingCounterMeasure.CounterMeasureStatusId == Constants.CounterMeasureStatusConfirmed) { throw new NDMSBusinessException (Constants.ConfirmedCounterMeasureEditErrorMessage); } if (existingCounterMeasure.DueDate != counterMeasureRequest.DueDate) { ValidateCounterMeasureDueDate(counterMeasureRequest.DueDate); } // Get logged in user id int loggedInUserId = userRepository.GetAll().FirstOrDefault( x => x.AccountName == userName).Id; // If the assigned user is not added to NDMS users table, add it here var assignedUserIds = userRepository.AddADUsersToNDMS(new List <string>() { counterMeasureRequest.AssignedTo }); //update changes to existing counter measure entity existingCounterMeasure.CounterMeasurePriorityId = counterMeasureRequest.CounterMeasurePriorityId != null ? counterMeasureRequest.CounterMeasurePriorityId.Value : (int?)null; existingCounterMeasure.Action = counterMeasureRequest.Action; existingCounterMeasure.AssignedTo = assignedUserIds.First(); existingCounterMeasure.DueDate = counterMeasureRequest.DueDate; existingCounterMeasure.LastModifiedBy = loggedInUserId; existingCounterMeasure.LastModifiedOn = TimeZoneUtility.GetCurrentTimestamp(); existingCounterMeasure.CounterMeasureStatusId = counterMeasureRequest .CounterMeasureStatusId.Value; if (!string.IsNullOrEmpty(counterMeasureRequest.Comment)) { // Add new comment if there are no comments if (existingCounterMeasure.CounterMeasureComments == null) { existingCounterMeasure.CounterMeasureComments = new List <CounterMeasureComment>() { CounterMeasureConverters.ConvertCommentToCounterMeasureComment (counterMeasureRequest.Comment, loggedInUserId) }; } else { //else add new comment. existingCounterMeasure.CounterMeasureComments.Add( CounterMeasureConverters.ConvertCommentToCounterMeasureComment (counterMeasureRequest.Comment, loggedInUserId) ); } } counterMeasureRepository.Save(); } }