public FiberCable(Guid fiberCableId, Guid walkOfInterestId, int numberOfFiber, string name, IFiberNetworkQueryService fiberNetworkQueryService) : this()
        {
            // Id check
            if (fiberCableId == null || fiberCableId == 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 (fiberNetworkQueryService.CheckIfFiberCableIdExists(fiberCableId))
            {
                throw new ArgumentException("A fiber cable with id: " + fiberCableId + " already exists");
            }

            var fiberCablePlaceEvent = new FiberCablePlaced()
            {
                WalkOfInterestId = walkOfInterestId,
                FiberCableId     = fiberCableId,
                NumberOfFibers   = numberOfFiber,
            };

            RaiseEvent(fiberCablePlaceEvent);
        }
Beispiel #2
0
        private void OnFiberCablePlaced(FiberCableInfo fiberCableInfo, FiberCablePlaced @event)
        {
            fiberCableInfo.Id = @event.FiberCableId;
            fiberCableInfo.WalkOfInterestId = @event.WalkOfInterestId;

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

            segment.Id              = Guid.NewGuid();
            segment.LineId          = @event.FiberCableId;
            segment.SequenceNumber  = 1;
            segment.FromRouteNodeId = routeNetworkQueryService.GetWalkOfInterestInfo(fiberCableInfo.WalkOfInterestId).StartNodeId;
            segment.ToRouteNodeId   = routeNetworkQueryService.GetWalkOfInterestInfo(fiberCableInfo.WalkOfInterestId).EndNodeId;

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

            // Create all the children
            fiberCableInfo.Children = new List <ILine>();

            for (int i = 0; i < @event.NumberOfFibers; i++)
            {
                var fiber = new FiberCableFiberInfo()
                {
                    Id               = Guid.NewGuid(),
                    Parent           = fiberCableInfo,
                    SequenceNumber   = i + 1,
                    WalkOfInterestId = fiberCableInfo.WalkOfInterestId
                };

                var fiberSegment = new FiberCableSegmentInfo()
                {
                    Id             = Guid.NewGuid(),
                    Line           = fiber,
                    FromNodeId     = segment.FromNodeId,
                    ToNodeId       = segment.ToNodeId,
                    LineId         = fiber.Id,
                    SequenceNumber = 1
                };

                fiber.Segments = new List <ISegment>()
                {
                    fiberSegment
                };
                fiberCableInfo.Children.Add(fiber);
            }


            fiberNetworkQueryService.UpdateFiberCableInfo(fiberCableInfo);
        }
 // Apply multi conduit placement event
 private void Apply(FiberCablePlaced @event)
 {
     Id = @event.FiberCableId;
 }