//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); }
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}"); } }