GetStatesForReinstatingAfterPossibleRetry(ReleasePublishingStatus releasePublishingStatus) { var startingState = releasePublishingStatus.Immediate ? ReleasePublishingStatusStates.ImmediateReleaseStartedState : ReleasePublishingStatusStates.ScheduledReleaseStartedState; var existingState = releasePublishingStatus.State; var publishingCancelled = existingState.Publishing == ReleasePublishingStatusPublishingStage.Cancelled; var overallFailed = existingState.Overall == ReleasePublishingStatusOverallStage.Failed; var contentOk = existingState.Content == ReleasePublishingStatusContentStage.Complete || releasePublishingStatus.Immediate && existingState.Content == startingState.Content; var filesOk = existingState.Files == ReleasePublishingStatusFilesStage.Complete; var dataOk = existingState.Data == ReleasePublishingStatusDataStage.Complete; var reinstate = publishingCancelled && overallFailed && contentOk && filesOk && dataOk; var newPublishingState = reinstate ? startingState.Publishing : existingState.Publishing; var newOverallState = reinstate ? startingState.Overall : existingState.Overall; return(newPublishingState, newOverallState); }
public async Task <ReleasePublishingStatus> CreateAsync(Guid releaseId, Guid releaseStatusId, ReleasePublishingStatusState state, bool immediate, IEnumerable <ReleasePublishingStatusLogMessage> logMessages = null) { var release = await GetReleaseAsync(releaseId); var table = await GetTableAsync(); var publish = immediate ? null : release.PublishScheduled; var releaseStatus = new ReleasePublishingStatus(release.Publication.Slug, publish, release.Id, releaseStatusId, release.Slug, state, immediate, logMessages); var tableResult = await table.ExecuteAsync(TableOperation.Insert(releaseStatus)); return(tableResult.Result as ReleasePublishingStatus); }
private async Task UpdateStage(ReleasePublishingStatus releasePublishingStatus, ReleasePublishingStatusPublishingStage stage, ReleasePublishingStatusLogMessage?logMessage = null) { await _releasePublishingStatusService.UpdatePublishingStageAsync(releasePublishingStatus.ReleaseId, releasePublishingStatus.Id, stage, logMessage); }