//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); } }
//it also works with mappings private void AddLastUpdateUser(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, Staging staging, List <SyncSystemFieldMapping> syncSystemFieldMappings) { if (staging == null) { return; } if (jiraRequest.User == null) { return; } if (jiraRequest.Issue?.Fields?.Assignee != null && jiraRequest.User.Name == jiraRequest.Issue.Fields.Assignee.Name) { return; } SyncSystemFieldMapping lastUpdateUserFieldMapping = syncSystemFieldMappings .FirstOrDefault(x => x.EpmFieldName == ProjectServerConstants.LastUpdateUser); if (lastUpdateUserFieldMapping != null) { var stagingFieldMappingValue = new StagingFieldMappingValue { Staging = staging, SyncSystemFieldMappingId = lastUpdateUserFieldMapping.SyncSystemFieldMappingId, Value = jiraRequest.User.Key }; systemToDbViewModel.StagingFieldMappingValuesToInsert.Add(stagingFieldMappingValue); } }
public static HttpRequestMessage ToRequestMessage(this JiraRequest request, Action <HttpRequestMessage> configureFn = null) { var requestMessage = new HttpRequestMessage(request.Verb, request.Uri); configureFn?.Invoke(requestMessage); return(requestMessage); }
private void FillWorkLog(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, int systemId) { MasterWorklog masterWorklog = masterWorklogBusinessService .GetWorkLogById(systemId, jiraRequest.Worklog.Id); if (masterWorklog == null) { masterWorklog = new MasterWorklog { RecordDateCreated = DateTime.Now, }; systemToDbViewModel.MasterWorklogsToInsert.Add(masterWorklog); } masterWorklog.RecordDateUpdated = DateTime.Now; masterWorklog.RecordState = RecordStateConst.New; masterWorklog.WebHookEvent = jiraRequest.WebhookEvent; masterWorklog.SystemId = systemId; masterWorklog.WorkLogId = jiraRequest.Worklog.Id; masterWorklog.IssueId = jiraRequest.Worklog.IssueId; masterWorklog.TimeSpentSeconds = jiraRequest.WebhookEvent == "worklog_deleted" ? 0 : jiraRequest.Worklog.TimeSpentSeconds; masterWorklog.DateStarted = DateTime.Parse(jiraRequest.Worklog.Started); masterWorklog.DateCreated = DateTime.Parse(jiraRequest.Worklog.Created); masterWorklog.DateUpdated = DateTime.Parse(jiraRequest.Worklog.Updated); masterWorklog.Comment = jiraRequest.Worklog.Comment; masterWorklog.AuthorName = jiraRequest.Worklog.Author.Name.ToLower(); masterWorklog.AuthorEmailAddress = jiraRequest.Worklog.Author.EmailAddress.ToLower(); masterWorklog.AuthorKey = jiraRequest.Worklog.Author.Name.ToLower(); }
//function that directly updates our Master table in DB private Master FillMasterIssueAsync(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, string jiraEpicLink, SyncSystemDTO syncSystem) { logger.Info("WebHookReceiver Issue Master"); Master master = masterBusinessService.GetIssueById(syncSystem.SystemId, jiraRequest.Issue.Id, jiraRequest.Issue.Fields.IssueType.Id); if (jiraRequest.WebhookEvent == "jira:issue_deleted" && master != null) { systemToDbViewModel.MastersToDelete.Add(master); return(null); } if (master == null) { master = new Master { RecordDateCreated = DateTime.Now }; systemToDbViewModel.MastersToInsert.Add(master); } master.RecordDateUpdated = DateTime.Now; master.SystemId = syncSystem.SystemId; master.ProjectId = jiraRequest.Issue.Fields.Project.Id; master.ProjectKey = jiraRequest.Issue.Fields.Project.Key; master.ProjectName = jiraRequest.Issue.Fields.Project.Name; master.IssueId = jiraRequest.Issue.Id; master.IssueKey = jiraRequest.Issue.Key; master.IssueTypeId = jiraRequest.Issue.Fields.IssueType.Id; master.IssueTypeName = jiraRequest.Issue.Fields.IssueType.Name; master.IsSubTask = jiraRequest.Issue.Fields.IssueType.Subtask; master.IssueName = GetIssueName(jiraRequest); master.ParentEpicKey = jiraEpicLink; //master.ParentIssueKey = jiraEpicLink; master.OriginalEstimate = jiraRequest.Issue.Fields.TimeOriginalEstimate; master.IssueActualWork = jiraRequest.Issue.Fields.TimeSpent; master.DateStart = jiraRequest.Issue.Fields.Created; if (jiraRequest.Issue.Fields.FixVersions != null && jiraRequest.Issue.Fields.FixVersions.Count != 0) { master.ParentVersionId = jiraRequest.Issue.Fields.FixVersions[0].Id; master.ParentVersionName = jiraRequest.Issue.Fields.FixVersions[0].Name; master.ParentVersionReleased = jiraRequest.Issue.Fields.FixVersions[0].Released; master.DateRelease = jiraRequest.Issue.Fields.FixVersions[0].ReleaseDate; } if (jiraRequest.Issue.Fields.Assignee != null) { master.Assignee = jiraRequest.Issue.Fields.Assignee.Name.ToLower(); } master.IssueStatus = jiraRequest.Issue.Fields.Status.Name; if (jiraRequest.Issue.Fields.Parent != null) { master.ParentIssueId = jiraRequest.Issue.Fields.Parent.Id; master.ParentIssueKey = jiraRequest.Issue.Fields.Parent.Key; } return(master); }
public static void Main(string[] args) { var auth = new UserLogin(new User()).GetAuthenticationToken(); var webClient = new WebClient { Headers = new WebHeaderCollection { "Authorization: Basic " + auth } }; var jiraApiUrl = ConfigurationManager.AppSettings["JiraApiUrl"]; var jiraRequest = new JiraRequest(webClient, jiraApiUrl); new T3Alarm().Start(jiraRequest.AllT3AwaitingTriage); }
public bool CheckChangeLog(JiraRequest jiraRequest, List <SyncSystemFieldMapping> syncSystemFieldMappings) { if (jiraRequest.WebhookEvent == "jira:worklog_updated" || jiraRequest.WebhookEvent == "jira:issue_created") { return(true); } string changedFileds = GetChangedFields(jiraRequest.ChangeLog?.Items); if (String.IsNullOrEmpty(changedFileds)) { return(false); } List <string> actualSystemFieldNames = syncSystemFieldMappings .Where(x => !String.IsNullOrEmpty(x.SystemFieldName) || x.FieldType == "ChangeTracker").Select(x => x.SystemFieldName) .ToList(); return(actualSystemFieldNames.Any(actualSystemFieldName => changedFileds.Contains(actualSystemFieldName))); }
private void MainWindow_Load(object sender, System.EventArgs e) { using (var loginScreen = new LoginWindow()) { loginScreen.ShowDialog(); AppUser.Username = loginScreen.Username; AppUser.Password = loginScreen.Password; } var webClient = new WebClient { Headers = new WebHeaderCollection { "Authorization: Basic " + AppUser.AuthenticationToken() } }; _jiraRequest = new JiraRequest(webClient, "http://sl1acsjira01:8080/"); PopulateIssueTypesDropdown(); PopulateComponentDropdown(); PopulateFixVersionDropdown(); }
protected void Login_Click(object sender, EventArgs e) { string baseUrl = ConfigurationManager.AppSettings["baseAPIUrl"]; string loginApiUrl = ConfigurationManager.AppSettings["loginAPI"]; string allOpenIssueUrl = ConfigurationManager.AppSettings["AllOpenIssueUrl"]; loginUserName = txtUserName.Value; loginPassword = txtUserPwd.Value; JiraRequest jiraReq = new JiraRequest(baseUrl, loginApiUrl, allOpenIssueUrl, loginUserName, loginPassword); loginResponse = jiraReq.LoginToJiraServer(baseUrl, loginApiUrl); if (loginResponse != "Error Occurred") { Session["UserSessionId"] = loginResponse; Response.Redirect("~/OpenIssueDashboard.aspx"); } else { LabelWarningErrorMessage.Text = loginResponse + " , Please try again"; } }
private void FillCustomFields(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, Master master, Staging staging, MasterHistory masterHistory, List <SyncSystemFieldMapping> fieldMappings, string epicName) { List <MasterFieldMappingValue> masterFieldMappingValues = masterBusinessService.GetMasterFieldMappingValues(master.MasterId); foreach (SyncSystemFieldMapping fieldMapping in fieldMappings) { string resultValue = ""; if (fieldMapping.EpmFieldName == ProjectServerConstants.RecordStateGeneral) { SetCustomFields(systemToDbViewModel, fieldMapping, master, staging, masterHistory, RecordStateConst.New, null, true); continue; } if (fieldMapping.EpmFieldName == ProjectServerConstants.RecordStateActual) { SetCustomFields(systemToDbViewModel, fieldMapping, master, staging, masterHistory, RecordStateConst.Done, null, true); continue; } if (String.IsNullOrEmpty(fieldMapping.SystemFieldName)) { continue; } if (fieldMapping.EpmFieldName == ProjectServerConstants.EpicName && !String.IsNullOrEmpty(epicName)) { SetCustomFields(systemToDbViewModel, fieldMapping, master, staging, masterHistory, epicName, masterFieldMappingValues); continue; } CustomField customField = customFields .FirstOrDefault(x => x.Name == fieldMapping.SystemFieldName); if (customField != null) { object customFieldValue = jiraRequest.Issue.GetField(customField.Id); if (customFieldValue != null) { if (fieldMapping.IsMultiSelect && customFieldValue is JArray) { //logger.Info($"FillCustomFields JArray: {customFieldValue}"); var array = (JArray)customFieldValue; resultValue = array.Aggregate(resultValue, (current, jToken) => current + (jToken + ",")).Trim(','); } else { if (fieldMapping.IsIdWithValue) { //logger.Info($"WebHookReceiver FillCustomFields fieldMapping.SystemFieldName: {fieldMapping.SystemFieldName} customFieldValue.ToString(): {customFieldValue}"); var objectProperties = JsonConvert.DeserializeObject <Dictionary <string, object> >(customFieldValue.ToString()); if (objectProperties.ContainsKey("value")) { resultValue = objectProperties["value"].ToString(); } } else { resultValue = customFieldValue.ToString(); } } if (String.IsNullOrEmpty(resultValue)) { continue; } SetCustomFields(systemToDbViewModel, fieldMapping, master, staging, masterHistory, resultValue, masterFieldMappingValues); } } } //await unitOfWork.SaveChangesAsync(); }
private Master FillMasterVersionAsync(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, int systemId) { logger.Info("WebHookReceiver Version Master"); Master master = masterBusinessService.GetIssueById(systemId, jiraRequest.Version.Id, "version"); if (master == null) { master = new Master { RecordDateCreated = DateTime.Now }; systemToDbViewModel.MastersToInsert.Add(master); } master.RecordDateUpdated = DateTime.Now; master.SystemId = systemId; master.IssueId = jiraRequest.Version.Id; master.IssueKey = jiraRequest.Version.Id; master.IssueName = GetVersionName(jiraRequest); master.ProjectId = jiraRequest.Version.ProjectId.ToString(); master.ParentVersionReleased = jiraRequest.Version.Released; master.IssueTypeName = "version"; master.IssueTypeId = "version"; master.DateFinish = jiraRequest.Version.UserReleaseDate; master.DateRelease = jiraRequest.Version.UserReleaseDate; //await unitOfWork.SaveChangesAsync(); return(master); }
public async Task <ProxyResponse> AddWebhookToDataBase(string jsonWebhook, int systemId) { logger.Info("WebHookReceiver UnitOfWork"); JiraAccessService jiraAccessService = null; SyncSystemDTO syncSystem = await syncSystemBusinessService.GetSyncSystemAsync(systemId); if (syncSystem != null) { jiraAccessService = new JiraAccessService(syncSystem); } if (jiraAccessService == null) { //await FillWebHookEntryAsync(unitOfWork, jsonWebhook); logger.Error("System not found " + systemId); logger.Info("WebHookReceiver END"); return(new ProxyResponse { Result = "ok", Data = "WebHookReceiver POST" }); } List <SyncSystemFieldMapping> syncSystemFieldMappings = syncSystemFieldMappingBusinessService.GetSyncSystemFieldMappings(syncSystem.SystemId); logger.Info("WebHookReceiver Get Fields Start"); customFields = await jiraAccessService.GetCustomFields(); if (customFields == null) { logger.Error("WebHookReceiver Custom fields for system " + systemId + " is NULL!"); logger.Info("WebHookReceiver END"); return(new ProxyResponse { Result = "ok", Data = "WebHookReceiver POST" }); } jiraEpicLinkField = customFields.FirstOrDefault(x => x.Name == JiraConstants.EpicLinkFieldName); logger.Info("WebHookReceiver Get Fields End"); JiraRequest jiraRequest = null; string jiraEpicLink = null; string jiraEpicName = null; try { jiraRequest = JsonConvert.DeserializeObject <JiraRequest>(jsonWebhook); if (jiraRequest == null) { //await FillWebHookEntryAsync(unitOfWork, jsonWebhook); logger.Info("WebHookReceiver END"); return(new ProxyResponse { Result = "ok", Data = "WebHookReceiver POST" }); } logger.Info($"WebHookReceiver syncSystem.SystemName: {syncSystem.SystemName}; " + $"jiraRequest.WebhookEvent: {jiraRequest.WebhookEvent}"); if (jiraRequest.Issue != null) { jiraRequest.Issue.AllFields = GetIssueFieldsDictionary(jsonWebhook); if (jiraRequest.Issue.Fields.IssueType.Name != "Epic") { if (jiraEpicLinkField != null) { jiraEpicLink = (string)jiraRequest.Issue.GetField(jiraEpicLinkField.Id); Master masterEpic = masterBusinessService.GetMaster(syncSystem.SystemId, jiraEpicLink); if (masterEpic != null) { jiraEpicName = masterEpic.IssueName; } } } else { jiraEpicName = jiraRequest.Issue.Fields.Summary.Trim(); } logger.Info(syncSystem.SystemName + ": " + jiraRequest.WebhookEvent + "; ProjectId: " + jiraRequest.Issue.Fields.Project.Id + "; ProjectKey: " + jiraRequest.Issue.Fields.Project.Key + "; IssueKey: " + jiraRequest.Issue.Key + "; IssueName: " + jiraRequest.Issue.Fields.Summary.Trim() + "; ChangedFields: " + GetChangedFields(jiraRequest.ChangeLog?.Items)); } } catch (Exception exception) { HandleException(exception); } jiraEpicName = jiraEpicName.RemoveNewLinesTabs().Truncate(); //DbContextTransaction transaction = unitOfWork.BeginTransaction(); logger.Info("WebHookReceiver DbContextTransaction"); try { SystemToDbViewModel systemToDbViewModel = new SystemToDbViewModel(); Staging staging; MasterHistory masterHistory; Master master; if (jiraRequest?.Issue != null) { if (jiraRequest.WebhookEvent == "jira:issue_deleted") { logger.Info("WebHookReceiver END"); return(new ProxyResponse { Result = "ok", Data = "WebHookReceiver POST" }); } master = FillMasterIssueAsync(systemToDbViewModel, jiraRequest, jiraEpicLink, syncSystem); masterHistory = FillMasterHistoryIssueAsync(systemToDbViewModel, jiraRequest, jiraEpicLink, syncSystem); staging = FillStagingIssueAsync(systemToDbViewModel, jiraRequest, jiraEpicLink, syncSystem, syncSystemFieldMappings); FillCustomFields(systemToDbViewModel, jiraRequest, master, staging, masterHistory, syncSystemFieldMappings, jiraEpicName); AddLastUpdateUser(systemToDbViewModel, jiraRequest, staging, syncSystemFieldMappings); AddSprints(systemToDbViewModel, jiraRequest, jiraAccessService, master, staging, masterHistory, syncSystemFieldMappings); } if (jiraRequest?.Worklog != null) { FillWorkLog(systemToDbViewModel, jiraRequest, systemId); } if (jiraRequest?.Version != null) { master = FillMasterVersionAsync(systemToDbViewModel, jiraRequest, systemId); masterHistory = FillMasterHistoryVersionAsync(systemToDbViewModel, jiraRequest, systemId); staging = FillStagingVersionAsync(systemToDbViewModel, jiraRequest, systemId, syncSystemFieldMappings); if (staging != null) { SyncSystemFieldMapping fieldMappingRecordStateGeneral = syncSystemFieldMappings .FirstOrDefault(x => x.SystemId == staging.SystemId && x.EpmFieldName == ProjectServerConstants.RecordStateGeneral); SetCustomFields(systemToDbViewModel, fieldMappingRecordStateGeneral, master, staging, masterHistory, RecordStateConst.New, null, true); SyncSystemFieldMapping fieldMappingRecordStateActual = syncSystemFieldMappings .FirstOrDefault(x => x.SystemId == staging.SystemId && x.EpmFieldName == ProjectServerConstants.RecordStateActual); SetCustomFields(systemToDbViewModel, fieldMappingRecordStateActual, master, staging, masterHistory, RecordStateConst.Done, null, true); } } await commonBusinessService.AddNewData(systemToDbViewModel); } catch (Exception exception) { logger.Error(exception); } //catch (DbUpdateException exception) //{ // foreach (DbEntityEntry dbEntityEntry in exception.Entries) // { // string resultString = dbEntityEntry.CurrentValues.PropertyNames.Aggregate("", // (current, propertyName) => // current + // $"propertyName: {propertyName} - value: {dbEntityEntry.CurrentValues[propertyName]};"); // logger.Fatal( // $"WebHookReceiver DbUpdateException dbEntityEntry.Entity {dbEntityEntry.Entity}; resultString: {resultString}"); // } //} //catch (DbEntityValidationException exception) //{ // HandleException(exception); // unitOfWork.RollbackTransaction(transaction); // foreach (DbEntityValidationResult validationResult in exception.EntityValidationErrors) // { // foreach (DbValidationError error in validationResult.ValidationErrors) // { // HandleException(error.PropertyName + " " + error.ErrorMessage, true); // } // } //} //catch (Exception exception) //{ // HandleException(exception); // unitOfWork.RollbackTransaction(transaction); //} ////finally ////{ //// await FillWebHookEntryAsync(unitOfWork, jsonWebhook); ////} return(new ProxyResponse { Result = "ok", Data = "WebHookReceiver POST" }); }
//function that directly updates our MasterHistory table in DB private MasterHistory FillMasterHistoryIssueAsync(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, string jiraEpicLink, SyncSystemDTO syncSystem) { logger.Info("WebHookReceiver Issue MasterHistory"); if (jiraRequest.WebhookEvent == "jira:issue_deleted") { return(null); } var masterHistory = new MasterHistory { RecordDateCreated = DateTime.Now, RecordDateUpdated = DateTime.Now, SystemId = syncSystem.SystemId, ProjectId = jiraRequest.Issue.Fields.Project.Id, ProjectKey = jiraRequest.Issue.Fields.Project.Key, ProjectName = jiraRequest.Issue.Fields.Project.Name, IssueId = jiraRequest.Issue.Id, IssueKey = jiraRequest.Issue.Key, IssueTypeId = jiraRequest.Issue.Fields.IssueType.Id, IssueTypeName = jiraRequest.Issue.Fields.IssueType.Name, IsSubTask = jiraRequest.Issue.Fields.IssueType.Subtask, IssueName = GetIssueName(jiraRequest), ParentEpicKey = jiraEpicLink, //ParentIssueKey = jiraEpicLink, IssueStatus = jiraRequest.Issue.Fields.Status.Name, DateStart = jiraRequest.Issue.Fields.Created }; if (jiraRequest.Issue.Fields.FixVersions != null && jiraRequest.Issue.Fields.FixVersions.Count != 0) { masterHistory.ParentVersionId = jiraRequest.Issue.Fields.FixVersions[0].Id; masterHistory.ParentVersionName = jiraRequest.Issue.Fields.FixVersions[0].Name; masterHistory.ParentVersionReleased = jiraRequest.Issue.Fields.FixVersions[0].Released; masterHistory.DateRelease = jiraRequest.Issue.Fields.FixVersions[0].ReleaseDate; } if (jiraRequest.Issue.Fields.Assignee != null) { masterHistory.Assignee = jiraRequest.Issue.Fields.Assignee.Name.ToLower(); } if (jiraRequest.Issue.Fields.Parent != null) { masterHistory.ParentIssueId = jiraRequest.Issue.Fields.Parent.Id; masterHistory.ParentIssueKey = jiraRequest.Issue.Fields.Parent.Key; } systemToDbViewModel.MasterHistoriesToInsert.Add(masterHistory); return(masterHistory); }
private string GetIssueName(JiraRequest jiraRequest) { string issueName = jiraRequest.Issue.Fields.Summary.RemoveNewLinesTabs().Truncate(); return(issueName); }
private string GetVersionName(JiraRequest jiraRequest) { string name = jiraRequest.Version.Name.RemoveNewLinesTabs().Truncate(); return(name); }
private Staging FillStagingVersionAsync(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, int systemId, List <SyncSystemFieldMapping> syncSystemFieldMappings) { if (!CheckChangeLog(jiraRequest, syncSystemFieldMappings)) { return(null); } logger.Info("WebHookReceiver Version Master"); var staging = new Staging { RecordDateCreated = DateTime.Now, RecordDateUpdated = DateTime.Now, RecordState = RecordStateConst.New, WebHookEvent = jiraRequest.WebhookEvent, SystemId = systemId, IssueId = jiraRequest.Version.Id, IssueKey = jiraRequest.Version.Id, IssueName = GetVersionName(jiraRequest), ProjectId = jiraRequest.Version.ProjectId.ToString(), ParentVersionReleased = jiraRequest.Version.Released, IssueTypeName = "version", IssueTypeId = "version", DateFinish = jiraRequest.Version.UserReleaseDate, DateRelease = jiraRequest.Version.UserReleaseDate }; //await unitOfWork.SaveChangesAsync(); systemToDbViewModel.StagingsToInsert.Add(staging); return(staging); }
private MasterHistory FillMasterHistoryVersionAsync(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, int systemId) { logger.Info("WebHookReceiver Version MasterHistory"); var masterHistory = new MasterHistory { RecordDateCreated = DateTime.Now }; systemToDbViewModel.MasterHistoriesToInsert.Add(masterHistory); masterHistory.RecordDateUpdated = DateTime.Now; masterHistory.SystemId = systemId; masterHistory.IssueId = jiraRequest.Version.Id; masterHistory.IssueName = GetVersionName(jiraRequest); masterHistory.IssueKey = jiraRequest.Version.Name.Trim(); masterHistory.ProjectId = jiraRequest.Version.ProjectId.ToString(); masterHistory.ParentVersionReleased = jiraRequest.Version.Released; masterHistory.IssueTypeName = "version"; masterHistory.IssueTypeId = "version"; masterHistory.DateFinish = jiraRequest.Version.UserReleaseDate; masterHistory.DateRelease = jiraRequest.Version.UserReleaseDate; //await unitOfWork.SaveChangesAsync(); return(masterHistory); }
//function that directly updates our Staging table in DB private Staging FillStagingIssueAsync(SystemToDbViewModel systemToDbViewModel, JiraRequest jiraRequest, string jiraEpicLink, SyncSystemDTO syncSystem, List <SyncSystemFieldMapping> syncSystemFieldMappings) { if (!CheckChangeLog(jiraRequest, syncSystemFieldMappings)) { return(null); } logger.Info("WebHookReceiver Staging"); if (jiraRequest.WebhookEvent == "jira:issue_deleted") { return(null); } var staging = new Staging { RecordDateCreated = DateTime.Now, SystemId = syncSystem.SystemId, RecordDateUpdated = DateTime.Now, RecordState = RecordStateConst.New, WebHookEvent = jiraRequest.WebhookEvent, ProjectId = jiraRequest.Issue.Fields.Project.Id, ProjectKey = jiraRequest.Issue.Fields.Project.Key, ProjectName = jiraRequest.Issue.Fields.Project.Name, IssueId = jiraRequest.Issue.Id, IssueKey = jiraRequest.Issue.Key, IssueTypeId = jiraRequest.Issue.Fields.IssueType.Id, IssueTypeName = jiraRequest.Issue.Fields.IssueType.Name, IsSubTask = jiraRequest.Issue.Fields.IssueType.Subtask, IssueName = GetIssueName(jiraRequest), ParentEpicKey = jiraEpicLink, //ParentIssueKey = jiraEpicLink, OriginalEstimate = jiraRequest.Issue.Fields.TimeOriginalEstimate, IssueActualWork = jiraRequest.Issue.Fields.TimeSpent, IssueStatus = jiraRequest.Issue.Fields.Status.Name, DateStart = jiraRequest.Issue.Fields.Created }; GetChangedFields(jiraRequest.ChangeLog?.Items, staging); if (jiraRequest.Issue.Fields.FixVersions != null && jiraRequest.Issue.Fields.FixVersions.Count != 0) { staging.ParentVersionId = jiraRequest.Issue.Fields.FixVersions[0].Id; staging.ParentVersionName = jiraRequest.Issue.Fields.FixVersions[0].Name; staging.ParentVersionReleased = jiraRequest.Issue.Fields.FixVersions[0].Released; staging.DateRelease = jiraRequest.Issue.Fields.FixVersions[0].ReleaseDate; } if (jiraRequest.Issue.Fields.Assignee != null) { staging.Assignee = jiraRequest.Issue.Fields.Assignee.Name.ToLower(); } if (jiraRequest.Issue.Fields.Parent != null) { staging.ParentIssueId = jiraRequest.Issue.Fields.Parent.Id; staging.ParentIssueKey = jiraRequest.Issue.Fields.Parent.Key; } systemToDbViewModel.StagingsToInsert.Add(staging); return(staging); }