protected override void Execute() { var type = TypeManager.GetType(DataType); using (new DataScope(DataScopeIdentifier.Administrated, CultureInfo.CreateSpecificCulture(LocaleName))) { DataEntityToken dataEntityToken; using (var transaction = TransactionsFacade.CreateNewScope()) { var unpublishSchedule = PublishScheduleHelper.GetUnpublishSchedule(type, DataId, LocaleName); Verify.IsNotNull(unpublishSchedule, "Missing an unpublish data schedule record"); DataFacade.Delete(unpublishSchedule); var deletePublished = false; var data = (IPublishControlled)DataFacade.GetDataByUniqueKey(type, DataId); Verify.IsNotNull(data, "The data with the id {0} does not exist", DataId); dataEntityToken = data.GetDataEntityToken(); var transitions = ProcessControllerFacade.GetValidTransitions(data).Keys; if (transitions.Contains(GenericPublishProcessController.Draft)) { data.PublicationStatus = GenericPublishProcessController.Draft; DataFacade.Update(data); deletePublished = true; } else { Log.LogWarning(LogTitle, "Scheduled unpublishing of data with label '{0}' could not be done because the data is not in a unpublisheble state", data.GetLabel()); } if (deletePublished) { using (new DataScope(DataScopeIdentifier.Public)) { var deletedData = (IPublishControlled)DataFacade.GetDataByUniqueKey(type, DataId); if (deletedData != null) { DataFacade.Delete(deletedData, CascadeDeleteType.Disable); Log.LogVerbose(LogTitle, "Scheduled unpublishing of data with label '{0}' is complete", deletedData.GetLabel()); } } } transaction.Complete(); } EntityTokenCacheFacade.ClearCache(dataEntityToken); PublishControlledHelper.ReloadDataElementInConsole(dataEntityToken); } }
protected override void Execute() { Type type = TypeManager.GetType(DataType); using (new DataScope(DataScopeIdentifier.Administrated, CultureInfo.CreateSpecificCulture(LocaleName))) { DataEntityToken dataEntityToken; using (var transaction = TransactionsFacade.CreateNewScope()) { var publishSchedule = PublishScheduleHelper.GetPublishSchedule(type, DataId, LocaleName); DataFacade.Delete(publishSchedule); var data = (IPublishControlled)DataFacade.TryGetDataByUniqueKey(type, DataId); if (data == null) { Log.LogWarning(LogTitle, $"Failed to find data of type '{type}' by id '{DataId}'."); transaction.Complete(); return; } dataEntityToken = data.GetDataEntityToken(); var transitions = ProcessControllerFacade.GetValidTransitions(data).Keys; if (transitions.Contains(GenericPublishProcessController.Published)) { data.PublicationStatus = GenericPublishProcessController.Published; DataFacade.Update(data); Log.LogVerbose(LogTitle, $"Scheduled publishing of data with label '{data.GetLabel()}' is complete"); } else { Log.LogWarning(LogTitle, $"Scheduled publishing of data with label '{data.GetLabel()}' could not be done because the data is not in a publisheble state"); } transaction.Complete(); } EntityTokenCacheFacade.ClearCache(dataEntityToken); PublishControlledHelper.ReloadDataElementInConsole(dataEntityToken); } }