private RouteNetworkEditOperationOccuredEvent CreateEditOperationOccuredEvent(object updateMessage) { Guid? workTaskMrid = null; string username = null; if (updateMessage is RouteSegmentMessage) { workTaskMrid = ((RouteSegmentMessage)updateMessage).After.WorkTaskMrid; username = ((RouteSegmentMessage)updateMessage).After.Username; } if (updateMessage is RouteNodeMessage) { workTaskMrid = ((RouteNodeMessage)updateMessage).After.WorkTaskMrid; username = ((RouteNodeMessage)updateMessage).After.Username; } var editOperationOccuredEvent = new RouteNetworkEditOperationOccuredEvent( nameof(RouteNetworkEditOperationOccuredEvent), Guid.NewGuid(), DateTime.UtcNow, workTaskMrid, username, _applicationSettings.ApplicationName, String.Empty, _eventStore.Get().ToArray()); return(editOperationOccuredEvent); }
public void HandleEvent(RouteNetworkEditOperationOccuredEvent request) { _logger.LogDebug("Got route network edit opreation occured message:"); _logger.LogDebug(JsonConvert.SerializeObject(request, Formatting.Indented)); var trans = _networkState.GetTransaction(); if (request.RouteNetworkCommands != null) { foreach (var command in request.RouteNetworkCommands) { if (command.RouteNetworkEvents != null) { foreach (var routeNetworkEvent in command.RouteNetworkEvents) { switch (routeNetworkEvent) { case RouteNodeAdded domainEvent: HandleEvent(domainEvent, trans); break; case RouteNodeMarkedForDeletion domainEvent: HandleEvent(domainEvent, trans); break; case RouteSegmentAdded domainEvent: HandleEvent(domainEvent, trans); break; case RouteSegmentMarkedForDeletion domainEvent: HandleEvent(domainEvent, trans); break; case RouteSegmentRemoved domainEvent: HandleEvent(domainEvent, trans); break; } } } } } _networkState.FinishWithTransaction(); }
private bool IsOperationEditEventValid(RouteNetworkEditOperationOccuredEvent operationOccuredEvent) { var existingSplittedCmds = operationOccuredEvent.RouteNetworkCommands .Where(x => x.CmdType == nameof(ExistingRouteSegmentSplitted)); if (existingSplittedCmds.Count() > 0) { foreach (var splittedCmd in existingSplittedCmds) { var removedEvents = splittedCmd.RouteNetworkEvents .Where(x => x.EventType == nameof(Events.RouteNetwork.RouteSegmentRemoved)); var routeSegmentAdded = splittedCmd.RouteNetworkEvents .Where(x => x.EventType == nameof(Events.RouteNetwork.RouteSegmentAdded)); if (removedEvents.Count() != 1 || routeSegmentAdded.Count() != 2) { return(false); } } } return(true); }