//on jira request we want to get Sprints to our DB -> we got
        //customfield in webhook for it, so we just need to parse it
        //into our values, and as we don't have rows for them in our tables
        //we store them in field mapping tables
        private void AddSprints(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, JiraAccessService jiraAccessService,
                                Master master, Staging staging, MasterHistory masterHistory, List <SyncSystemFieldMapping> syncSystemFieldMappings)
        {
            //we receiving fild from jira and getting its value
            CustomField customFieldSprint = customFields.FirstOrDefault(x => x.Name == JiraConstants.SprintFieldName);

            logger.Info($"WebHookReceiver AddSprints issue.Key: {jiraRequest.Issue.Key}");
            if (customFieldSprint != null && jiraRequest.Issue.GetField(customFieldSprint.Id) != null)
            {
                string[] sprintsStrings = JsonConvert.DeserializeObject <string[]>(jiraRequest.Issue.GetField(customFieldSprint.Id).ToString());

                logger.Info($"WebHookReceiver AddSprints jiraRequest.Issue.Key: {jiraRequest.Issue.Key}; " +
                            $"customFieldSprint.Name: {customFieldSprint.Name}; " +
                            $"customFieldSprint.Id: {customFieldSprint.Id}; " +
                            $"sprints.Length: {sprintsStrings.Length}");

                List <MasterFieldMappingValue>        masterFieldMappingValues        = new List <MasterFieldMappingValue>();
                List <MasterHistoryFieldMappingValue> masterHistoryFieldMappingValues = new List <MasterHistoryFieldMappingValue>();
                List <StagingFieldMappingValue>       stagingFieldMappingValues       = new List <StagingFieldMappingValue>();

                JiraSprint jiraSprint = jiraAccessService.ParseSprintField(sprintsStrings);
                commonBusinessService.SetSprintField(jiraSprint, syncSystemFieldMappings, master, masterHistory, staging,
                                                     masterFieldMappingValues, masterHistoryFieldMappingValues, stagingFieldMappingValues);

                systemToDbViewModel.MasterFieldMappingValuesToInsert.AddRange(masterFieldMappingValues);
                systemToDbViewModel.MasterHistoryFieldMappingValuesToInsert.AddRange(masterHistoryFieldMappingValues);
                systemToDbViewModel.StagingFieldMappingValuesToInsert.AddRange(stagingFieldMappingValues);
            }
        }
        public JiraSprint ParseSprintField(string[] sprintsStrings)
        {
            //var sprintArray = (JArray)JsonConvert.DeserializeObject(fieldValue);
            List <JiraSprint> sprints = new List <JiraSprint>();

            foreach (string sprintString in sprintsStrings)
            {
                Match      match      = Regex.Match(sprintString, @"id=(?<id>.*),rapidViewId=(?<rapidViewId>.*),state=(?<state>.*),name=(?<name>.*),goal=(?<goal>.*),startDate=(?<startDate>.*),endDate=(?<endDate>.*),completeDate=(?<completeDate>.*),sequence=(?<sequence>.*$)");
                JiraSprint jiraSprint = new JiraSprint
                {
                    Id        = match.Groups["id"].ToString(),
                    Name      = match.Groups["name"].ToString(),
                    State     = match.Groups["state"].ToString(),
                    StartDate = match.Groups["startDate"].ToString(),
                    EndDate   = match.Groups["endDate"].ToString()
                };
                sprints.Add(jiraSprint);
                logger.Info($"ParseSprintField jiraSprint.Id: {jiraSprint.Id} " +
                            $"jiraSprint.Name: {jiraSprint.Name} " +
                            $"jiraSprint.State: {jiraSprint.State} " +
                            $"jiraSprint.StartDate: {jiraSprint.StartDate} " +
                            $"jiraSprint.EndDate: {jiraSprint.EndDate}");
            }

            JiraSprint resultSprint = (sprints.FirstOrDefault(x => x.State == "ACTIVE")
                                       ?? sprints.FirstOrDefault(x => x.State == "FUTURE"))
                                      ?? (sprints.Where(x => !String.IsNullOrEmpty(x.EndDate) && x.EndDate != "<null>")
                                          .OrderByDescending(x => DateTime.Parse(x.EndDate)).FirstOrDefault()
                                          ?? sprints.FirstOrDefault());

            return(resultSprint);
        }
コード例 #3
0
        public void SetSprintField(JiraSprint resultSprint, List <SyncSystemFieldMapping> syncSystemFieldMappings,
                                   Master master, MasterHistory masterHistory, Staging staging,
                                   List <MasterFieldMappingValue> masterFieldMappingValues,
                                   List <MasterHistoryFieldMappingValue> masterHistoryFieldMappingValues,
                                   List <StagingFieldMappingValue> stagingFieldMappingValues)
        {
            if (resultSprint != null)
            {
                Logger.Info($"ParseSprintField resultSprint.Id: {resultSprint.Id} " +
                            $"resultSprint.Name: {resultSprint.Name} " +
                            $"resultSprint.State: {resultSprint.State} " +
                            $"resultSprint.StartDate: {resultSprint.StartDate} " +
                            $"resultSprint.EndDate: {resultSprint.EndDate}");

                //we getting Ids for mapping frob DB
                int sprintIdSyncSystemFieldMappingId =
                    syncSystemFieldMappings.Where(x => x.EpmFieldName == ProjectServerConstants.SprintId)
                    .Select(y => y.SyncSystemFieldMappingId)
                    .FirstOrDefault();
                int sprintNameSyncSystemFieldMappingId =
                    syncSystemFieldMappings.Where(
                        x => x.EpmFieldName == ProjectServerConstants.SprintName)
                    .Select(y => y.SyncSystemFieldMappingId)
                    .FirstOrDefault();
                int sprintStateSyncSystemFieldMappingId =
                    syncSystemFieldMappings.Where(
                        x => x.EpmFieldName == ProjectServerConstants.SprintState)
                    .Select(y => y.SyncSystemFieldMappingId)
                    .FirstOrDefault();
                int sprintStartDateSyncSystemFieldMappingId =
                    syncSystemFieldMappings.Where(
                        x => x.EpmFieldName == ProjectServerConstants.SprintStartDate)
                    .Select(y => y.SyncSystemFieldMappingId)
                    .FirstOrDefault();
                int sprintEndDateSyncSystemFieldMappingId =
                    syncSystemFieldMappings.Where(
                        x => x.EpmFieldName == ProjectServerConstants.SprintEndDate)
                    .Select(y => y.SyncSystemFieldMappingId)
                    .FirstOrDefault();
                if (sprintIdSyncSystemFieldMappingId == 0 || sprintNameSyncSystemFieldMappingId == 0 ||
                    sprintStateSyncSystemFieldMappingId == 0 || sprintStartDateSyncSystemFieldMappingId == 0 ||
                    sprintEndDateSyncSystemFieldMappingId == 0)
                {
                    return;
                }
                //Id
                master.ParentSprintId        = resultSprint.Id;
                masterHistory.ParentSprintId = resultSprint.Id;
                masterFieldMappingValues.Add(new MasterFieldMappingValue
                {
                    Master = master,
                    SyncSystemFieldMappingId = sprintIdSyncSystemFieldMappingId,
                    Value = resultSprint.Id
                });
                masterHistoryFieldMappingValues.Add(new MasterHistoryFieldMappingValue
                {
                    MasterHistory            = masterHistory,
                    SyncSystemFieldMappingId = sprintIdSyncSystemFieldMappingId,
                    Value = resultSprint.Id
                });
                if (staging != null)
                {
                    //Id
                    staging.ParentSprintId = resultSprint.Id;
                    stagingFieldMappingValues.Add(new StagingFieldMappingValue
                    {
                        Staging = staging,
                        SyncSystemFieldMappingId = sprintIdSyncSystemFieldMappingId,
                        Value = resultSprint.Id
                    });
                    //Name
                    staging.ParentSprintName = resultSprint.Name;
                    stagingFieldMappingValues.Add(new StagingFieldMappingValue
                    {
                        Staging = staging,
                        SyncSystemFieldMappingId = sprintNameSyncSystemFieldMappingId,
                        Value = resultSprint.Name
                    });
                    //state
                    stagingFieldMappingValues.Add(new StagingFieldMappingValue
                    {
                        Staging = staging,
                        SyncSystemFieldMappingId = sprintStateSyncSystemFieldMappingId,
                        Value = resultSprint.State
                    });
                    //startdate
                    stagingFieldMappingValues.Add(new StagingFieldMappingValue
                    {
                        Staging = staging,
                        SyncSystemFieldMappingId = sprintStartDateSyncSystemFieldMappingId,
                        Value = resultSprint.StartDate
                    });
                    //enddate
                    stagingFieldMappingValues.Add(new StagingFieldMappingValue
                    {
                        Staging = staging,
                        SyncSystemFieldMappingId = sprintEndDateSyncSystemFieldMappingId,
                        Value = resultSprint.EndDate
                    });
                }
                //Name
                master.ParentSprintName        = resultSprint.Name;
                masterHistory.ParentSprintName = resultSprint.Name;
                masterFieldMappingValues.Add(new MasterFieldMappingValue
                {
                    Master = master,
                    SyncSystemFieldMappingId = sprintNameSyncSystemFieldMappingId,
                    Value = resultSprint.Name
                });
                masterHistoryFieldMappingValues.Add(new MasterHistoryFieldMappingValue
                {
                    MasterHistory            = masterHistory,
                    SyncSystemFieldMappingId = sprintNameSyncSystemFieldMappingId,
                    Value = resultSprint.Name
                });
                //state
                masterFieldMappingValues.Add(new MasterFieldMappingValue
                {
                    Master = master,
                    SyncSystemFieldMappingId = sprintStateSyncSystemFieldMappingId,
                    Value = resultSprint.State
                });
                masterHistoryFieldMappingValues.Add(new MasterHistoryFieldMappingValue
                {
                    MasterHistory            = masterHistory,
                    SyncSystemFieldMappingId = sprintStateSyncSystemFieldMappingId,
                    Value = resultSprint.State
                });
                //startdate
                masterFieldMappingValues.Add(new MasterFieldMappingValue
                {
                    Master = master,
                    SyncSystemFieldMappingId = sprintStartDateSyncSystemFieldMappingId,
                    Value = resultSprint.StartDate
                });
                masterHistoryFieldMappingValues.Add(new MasterHistoryFieldMappingValue
                {
                    MasterHistory            = masterHistory,
                    SyncSystemFieldMappingId = sprintStartDateSyncSystemFieldMappingId,
                    Value = resultSprint.StartDate
                });
                //enddate
                masterFieldMappingValues.Add(new MasterFieldMappingValue
                {
                    Master = master,
                    SyncSystemFieldMappingId = sprintEndDateSyncSystemFieldMappingId,
                    Value = resultSprint.EndDate
                });
                masterHistoryFieldMappingValues.Add(new MasterHistoryFieldMappingValue
                {
                    MasterHistory            = masterHistory,
                    SyncSystemFieldMappingId = sprintEndDateSyncSystemFieldMappingId,
                    Value = resultSprint.EndDate
                });

                Logger.Info($"ParseSprintField stagingFieldMappingValues.Count: {stagingFieldMappingValues.Count} " +
                            $"masterFieldMappingValues.Count: {masterFieldMappingValues.Count} " +
                            $"masterHistoryFieldMappingValues.Count: {masterHistoryFieldMappingValues.Count}");
            }
        }