/// <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(); }
public IHttpActionResult PostCounterMeasure(CounterMeasureAddRequest counterMeasureRequest) { CheckModelState(); //if user is kpi owner not an admin, check if he is the kpi owner of the given //scorecard else return unauthorized if (IsUserKPIOwnerOrTeamMemberNotAdmin()) { bool isUserKPIOwnerOfScorecard = userManager. IsUserKPIOwnerOfScorecard(Username, counterMeasureRequest.ScorecardId.Value); bool isUserTeamMemberOfScorecard = userManager. IsUserTeamMemberOfScorecard(Username, counterMeasureRequest.ScorecardId.Value); if (!isUserKPIOwnerOfScorecard && !isUserTeamMemberOfScorecard) { return(Unauthorized()); } } counterMeasureManager.AddCounterMeasure(counterMeasureRequest, Username); return(Ok()); }