internal int AddInnerConduit(ConduitColorEnum color, int outerDiameter, int innerDiameter, IRouteNetworkState routeNetworkQueryService, IConduitNetworkQueryService conduitNetworkQueryService) { var multiConduitInfo = conduitNetworkQueryService.GetMultiConduitInfo(Id); int seqNo = 1; if (multiConduitInfo.Children != null && multiConduitInfo.Children.Count > 0) { var lastInnerConduitSeqNo = multiConduitInfo.Children.OfType <ConduitInfo>().Max(c => c.SequenceNumber); seqNo = lastInnerConduitSeqNo + 1; } var innerConduitInfo = new ConduitInfo() { Id = Guid.NewGuid(), Name = "Subrør " + seqNo, Color = color, Kind = ConduitKindEnum.InnerConduit, InnerDiameter = innerDiameter, OuterDiameter = outerDiameter, Shape = ConduitShapeKindEnum.Round, ColorMarking = ConduitColorEnum.None }; var innerConduitAddedEvent = new MultiConduitInnerConduitAdded() { MultiConduitId = Id, MultiConduitIndex = seqNo, ConduitInfo = innerConduitInfo }; RaiseEvent(innerConduitAddedEvent); return(seqNo); }
private static ConduitSpecification CreateSingleConduitSpecification(string manufacturer, string productModel, ConduitColorEnum color, int outerDiameter, int innerDiameter) { var conduitSpec = new ConduitSpecification() { Id = GUIDHelper.StringToGUID(color + ":" + outerDiameter + ":" + innerDiameter), Kind = ConduitKindEnum.SingleConduit, Shape = ConduitShapeKindEnum.Round, Color = color, OuterDiameter = outerDiameter, InnerDiameter = innerDiameter, ProductModels = new List <ProductModelInfo>() { new ProductModelInfo() { Id = GUIDHelper.StringToGUID(manufacturer + ":" + productModel), Name = productModel, Manufacturer = new ManufacturerInfo() { Id = GUIDHelper.StringToGUID(manufacturer), Name = manufacturer } } } }; return(conduitSpec); }
public SingleConduit(Guid conduitId, Guid walkOfInterestId, Guid conduitSpecificationId, string name, ConduitColorEnum markingColor, string markingText, IConduitNetworkQueryService conduitNetworkQueryService, IConduitSpecificationRepository conduitSpecificationRepository, string demoDataSpec = null) : this() { ////////////////////////////////////////////////////////////////////////////////////// // NOTICE: // This constructor is currently a hack that just uses the demo data builder. // Must be refactored to use a conduit catalog system. // Conduit Id check if (conduitId == null || conduitId == Guid.Empty) { throw new ArgumentException("Id cannot be null or empty"); } // Walk of interest id check if (walkOfInterestId == null || walkOfInterestId == Guid.Empty) { throw new ArgumentException("WalkOfInterestId cannot be null or empty"); } // Check that not already exists if (conduitNetworkQueryService.CheckIfSingleConduitIdExists(conduitId)) { throw new ArgumentException("A singe conduit id: " + conduitId + " already exists"); } // Create the conduit if (demoDataSpec != null && demoDataSpec != "") { var singleConduitPlaced = ConduitEventBuilder.CreateSingleConduitPlacedEvent(conduitId, walkOfInterestId, demoDataSpec); RaiseEvent(singleConduitPlaced); } else { var conduitSpec = conduitSpecificationRepository.GetConduitSpecification(conduitSpecificationId); var assetInfo = new AssetInfo(); if (conduitSpec.ProductModels != null && conduitSpec.ProductModels.Count > 0) { assetInfo.Model = conduitSpec.ProductModels[0]; if (conduitSpec.ProductModels[0].Manufacturer != null) { assetInfo.Manufacturer = conduitSpec.ProductModels[0].Manufacturer; } } var conduitInfo = new ConduitInfo() { Id = conduitId, Name = name, Shape = conduitSpec.Shape, Color = conduitSpec.Color, ColorMarking = markingColor, OuterDiameter = conduitSpec.OuterDiameter, InnerDiameter = conduitSpec.InnerDiameter }; var singleConduitPlaccedEvent = new SingleConduitPlaced() { WalkOfInterestId = walkOfInterestId, SingleConduitId = conduitId, ConduitInfo = conduitInfo, AssetInfo = assetInfo }; RaiseEvent(singleConduitPlaccedEvent); } }
public MultiConduit(Guid conduitId, Guid walkOfInterestId, Guid conduitSpecificationId, string name, ConduitColorEnum markingColor, string markingText, IConduitNetworkQueryService conduitNetworkQueryService, IConduitSpecificationRepository conduitSpecificationRepository, string demoDataSpec = null) : this() { // Conduit Id check if (conduitId == null || conduitId == Guid.Empty) { throw new ArgumentException("Id cannot be null or empty"); } // Walk of interest id check if (walkOfInterestId == null || walkOfInterestId == Guid.Empty) { throw new ArgumentException("WalkOfInterestId cannot be null or empty"); } // Check that not already exists if (conduitNetworkQueryService.CheckIfMultiConduitIdExists(conduitId)) { throw new ArgumentException("A multi conduit id: " + conduitId + " already exists"); } // Create the multi conduit itself if (demoDataSpec != null && demoDataSpec != "") { var multiConduitPlaced = ConduitEventBuilder.CreateMultiConduitPlacedEvent(conduitId, walkOfInterestId, demoDataSpec); RaiseEvent(multiConduitPlaced); // Create all the inner conduits (if the multi conduit has such - the demo data builder will know) if (!demoDataSpec.StartsWith("FLEX")) { var innerConduitAddedEvents = ConduitEventBuilder.CreateInnerConduitAddedEvents(multiConduitPlaced, demoDataSpec); foreach (var innerConduitAddedEvent in innerConduitAddedEvents) { RaiseEvent(innerConduitAddedEvent); } } } else { var conduitSpec = conduitSpecificationRepository.GetConduitSpecification(conduitSpecificationId); var assetInfo = new AssetInfo(); assetInfo.Model = conduitSpec.ProductModels[0]; assetInfo.Manufacturer = conduitSpec.ProductModels[0].Manufacturer; var conduitInfo = new ConduitInfo() { Id = conduitId, Name = name, Shape = conduitSpec.Shape, Color = conduitSpec.Color, ColorMarking = markingColor, TextMarking = markingText, OuterDiameter = conduitSpec.OuterDiameter, InnerDiameter = conduitSpec.InnerDiameter }; var multiConduitEvent = new MultiConduitPlaced() { WalkOfInterestId = walkOfInterestId, MultiConduitId = conduitId, ConduitInfo = conduitInfo, AssetInfo = assetInfo }; RaiseEvent(multiConduitEvent); // Create all the inner conduit foreach (var innerConduitSpec in conduitSpec.ChildSpecifications) { var innerConduitInfo = new ConduitInfo() { Id = Guid.NewGuid(), Name = "Subrør " + innerConduitSpec.SequenceNumber, Color = innerConduitSpec.Color, InnerDiameter = innerConduitSpec.InnerDiameter, OuterDiameter = innerConduitSpec.OuterDiameter, Shape = innerConduitSpec.Shape, ColorMarking = ConduitColorEnum.None }; var innerConduitAddedEvent = new MultiConduitInnerConduitAdded() { MultiConduitId = conduitId, MultiConduitIndex = innerConduitSpec.SequenceNumber, ConduitInfo = innerConduitInfo }; RaiseEvent(innerConduitAddedEvent); } } }