Skip to content

Commit 8f181b0

Browse files
.
1 parent 59e007d commit 8f181b0

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

roles/lib/files/FWO.Services/ModellingConnectionHandler.cs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Data;
1212
using Microsoft.AspNetCore.Components;
1313
using static FWO.Data.Modelling.ModellingTypes;
14+
using System.Collections.Generic;
1415

1516

1617
namespace FWO.Services
@@ -1020,12 +1021,37 @@ public bool CalcVisibility()
10201021
return true;
10211022
}
10221023

1023-
public bool IsAreaForbiddenInDirection(Direction direction)
1024+
private List<ModellingNetworkArea> GetAreasInDirection(List<ModellingNetworkArea> networkAreas, Direction direction)
1025+
{
1026+
List<ModellingNetworkArea> directionNetworkAreas = [];
1027+
1028+
foreach (ModellingNetworkArea area in networkAreas)
1029+
{
1030+
if (direction == Direction.Source)
1031+
{
1032+
if (ActConn.SourceAreas.FirstOrDefault(w => w.Content.Id == area.Id) == null && !SrcAreasToAdd.Contains(area))
1033+
{
1034+
directionNetworkAreas.Add(area);
1035+
}
1036+
}
1037+
else if (direction == Direction.Destination)
1038+
{
1039+
if (ActConn.DestinationAreas.FirstOrDefault(w => w.Content.Id == area.Id) == null && !DstAreasToAdd.Contains(area))
1040+
{
1041+
directionNetworkAreas.Add(area);
1042+
}
1043+
}
1044+
}
1045+
1046+
return directionNetworkAreas;
1047+
}
1048+
1049+
public bool IsAreaForbiddenInDirection(List<ModellingNetworkArea> networkAreas, Direction direction)
10241050
{
10251051
return direction switch
10261052
{
1027-
Direction.Source => ActConn.DestinationAreas.Count > 0 || DstAreasToAdd.Count > 0,
1028-
Direction.Destination => ActConn.SourceAreas.Count > 0 || SrcAreasToAdd.Count > 0,
1053+
Direction.Source => ActConn.DestinationAreas.Count > 0 || GetAreasInDirection(networkAreas, Direction.Destination).Count > 0,
1054+
Direction.Destination => ActConn.SourceAreas.Count > 0 || GetAreasInDirection(networkAreas, Direction.Source).Count > 0,
10291055
_ => false,
10301056
};
10311057
}
@@ -1053,7 +1079,7 @@ public bool NetworkAreaUseAllowed(List<ModellingNetworkArea> networkAreas, Direc
10531079
reason.Title = userConfig.GetText("edit_connection");
10541080
}
10551081

1056-
if (IsAreaForbiddenInDirection(direction))
1082+
if (IsAreaForbiddenInDirection(networkAreas, direction))
10571083
{
10581084
reason.Text = userConfig.GetText("direction_contain_nwarea");
10591085
return false;

0 commit comments

Comments
 (0)