public async Task <bool> ValidatePublishingState(Guid releaseId) { _logger.LogTrace($"Validating publishing state: {releaseId}"); var releaseStatuses = (await _releaseStatusService.GetAllByOverallStage(releaseId, Scheduled, Started)).ToList(); // Should never happen as we mark scheduled releases as superseded prior to validation var scheduled = releaseStatuses.FirstOrDefault(status => status.State.Overall == Scheduled); if (scheduled != null) { _logger.LogError( $"Validating {ValidationStage.ReleasePublishingStateNotScheduledOrStarted.ToString()} failed: " + $"Publishing is already scheduled. ReleaseStatus: {scheduled.Id}"); return(false); } var started = releaseStatuses.FirstOrDefault(status => status.State.Overall == Started); if (started != null) { _logger.LogError( $"Validating {ValidationStage.ReleasePublishingStateNotScheduledOrStarted.ToString()} failed: " + $"Publishing has already started. ReleaseStatus: {started.Id}"); return(false); } return(true); }
private async Task MarkScheduledReleaseStatusAsSuperseded(NotifyChangeMessage message) { // There may be an existing scheduled ReleaseStatus entry if this release has been validated before // If so, mark it as superseded var scheduled = await _releaseStatusService.GetAllByOverallStage(message.ReleaseId, Scheduled); foreach (var releaseStatus in scheduled) { await _releaseStatusService.UpdateStateAsync(message.ReleaseId, releaseStatus.Id, SupersededState); } }