コード例 #1
0
        /// <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();
        }
コード例 #2
0
        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());
        }