Exemplo n.º 1
0
        private void SingleConduitPlaced(SingleConduitInfo singleConduitInfo, SingleConduitPlaced @event)
        {
            singleConduitInfo.Id               = @event.SingleConduitId;
            singleConduitInfo.Kind             = ConduitKindEnum.SingleConduit;
            singleConduitInfo.AssetInfo        = @event.AssetInfo;
            singleConduitInfo.WalkOfInterestId = @event.WalkOfInterestId;
            singleConduitInfo.Color            = @event.ConduitInfo.Color;
            singleConduitInfo.Shape            = @event.ConduitInfo.Shape;
            singleConduitInfo.ColorMarking     = @event.ConduitInfo.ColorMarking;
            singleConduitInfo.TextMarking      = @event.ConduitInfo.TextMarking;
            singleConduitInfo.Name             = @event.ConduitInfo.Name;
            singleConduitInfo.InnerDiameter    = @event.ConduitInfo.InnerDiameter;
            singleConduitInfo.OuterDiameter    = @event.ConduitInfo.OuterDiameter;

            // Create segment info (as is looks before any cuts or connections)
            var segment = new SingleConduitSegmentInfo();

            segment.Id              = Guid.NewGuid();
            segment.ConduitId       = @event.SingleConduitId;
            segment.SequenceNumber  = 1;
            segment.FromRouteNodeId = routeNetworkQueryService.GetWalkOfInterestInfo(singleConduitInfo.WalkOfInterestId).StartNodeId;
            segment.ToRouteNodeId   = routeNetworkQueryService.GetWalkOfInterestInfo(singleConduitInfo.WalkOfInterestId).EndNodeId;

            singleConduitInfo.Segments = new List <ISegment>()
            {
                segment
            };

            conduitNetworkQueryService.UpdateSingleConduitInfo(singleConduitInfo);
        }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 3
0
 // Apply conduit placement event
 private void Apply(SingleConduitPlaced @event)
 {
     Id = @event.ConduitInfo.Id;
     _outerConduitInfo = @event.ConduitInfo;
     _assetInfo        = @event.AssetInfo;
 }