private static void HandleProductionOrderIsInStateCreated(ProductionOrder productionOrder, IAggregator aggregator, IDbTransactionData dbTransactionData) { // delete all operations List <ProductionOrderOperation> operations = aggregator.GetProductionOrderOperationsOfProductionOrder(productionOrder); dbTransactionData.ProductionOrderOperationDeleteAll(operations); // collect entities and demandToProviders/providerToDemands to delete List <IDemandOrProvider> demandOrProvidersToDelete = CreateProductionOrderSubGraph(true, productionOrder, aggregator); // delete all collected entities IOpenDemandManager openDemandManager = ZppConfiguration.CacheManager.GetOpenDemandManager(); foreach (var demandOrProvider in demandOrProvidersToDelete) { // don't forget to delete it from openDemands if (demandOrProvider.GetType() == typeof(StockExchangeDemand)) { if (openDemandManager.Contains((Demand)demandOrProvider)) { openDemandManager.RemoveDemand((Demand)demandOrProvider); } } List <ILinkDemandAndProvider> demandAndProviderLinks = aggregator.GetArrowsToAndFrom(demandOrProvider); dbTransactionData.DeleteAllFrom(demandAndProviderLinks); dbTransactionData.DeleteA(demandOrProvider); } }
private static void ArchiveArrowsToAndFrom(IDemandOrProvider demandOrProvider, IDbTransactionData dbTransactionData, IDbTransactionData dbTransactionDataArchive, IAggregator aggregator) { List <ILinkDemandAndProvider> demandAndProviderLinks = aggregator.GetArrowsToAndFrom(demandOrProvider); foreach (var demandAndProviderLink in demandAndProviderLinks) { dbTransactionDataArchive.AddA(demandAndProviderLink); dbTransactionData.DeleteA(demandAndProviderLink); } }