private StartingLane VerifyStartingLane(StartingLaneDto dto, HashSet <string> startingLaneIds) { if (string.IsNullOrEmpty(dto.StartingLaneId)) { throw new ArgumentNullException("Missing StartingLaneId"); } if (string.IsNullOrEmpty(dto.ShortName)) { throw new ArgumentNullException("Missing StartingLane.ShortName"); } if (!startingLaneIds.Add(dto.StartingLaneId)) { throw new ArgumentOutOfRangeException("Duplicate StartingLaneId " + dto.StartingLaneId); } StartingLane startingLane = new StartingLane { ShortName = dto.ShortName, StartingLaneId = dto.StartingLaneId, SubLanes = new List <StartingLane>() }; if (dto.SubLanes != null) { foreach (var subLane in dto.SubLanes) { startingLane.SubLanes.Add(VerifyStartingLane(subLane, startingLaneIds)); } } return(startingLane); }
private static StartingLaneDto BuildStartingLane(StartingLane model) { return(new StartingLaneDto { ShortName = model.ShortName, StartingLaneId = model.StartingLaneId, SubLanes = model.SubLanes.Select(BuildStartingLane).ToList() }); }
private StartingLane BuildLane(string name, params StartingLane[] subLanes) { var thisLane = new StartingLane { StartingLaneId = name, ShortName = name, SubLanes = subLanes.ToList() }; AdjustSublanesIds(name, thisLane.SubLanes); return(thisLane); }