Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
                }
            }
        }