diff --git a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
index 5551e40..3b766a9 100644
--- a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
+++ b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
@@ -3,7 +3,7 @@
net9.0
enable
enable
- 0.0.142
+ 0.0.145
None
False
False
@@ -60,7 +60,7 @@
$(PackageOutputPath)$(PackageId).$(Version).nupkg
- dotnet nuget push **/*.nupkg --source https://git.afrino.co/api/packages/FourSat/nuget/index.json --api-key 061a5cb15517c6da39c16cfce8556c55ae104d0d --skip-duplicate && del "$(NugetPackagePath)"
+ dotnet nuget push **/*.nupkg --source https://git.afrino.co/api/packages/FourSat/nuget/index.json --api-key 061a5cb15517c6da39c16cfce8556c55ae104d0d --skip-duplicate
diff --git a/src/CMSMicroservice.Protobuf/Protos/networkmembership.proto b/src/CMSMicroservice.Protobuf/Protos/networkmembership.proto
index c279f90..be9a22a 100644
--- a/src/CMSMicroservice.Protobuf/Protos/networkmembership.proto
+++ b/src/CMSMicroservice.Protobuf/Protos/networkmembership.proto
@@ -104,7 +104,7 @@ message GetUserNetworkResponse
// GetNetworkTree Query
message GetNetworkTreeRequest
{
- int64 root_user_id = 1;
+ int64 user_id = 1;
google.protobuf.Int32Value max_depth = 2;
google.protobuf.BoolValue only_active = 3;
}
diff --git a/src/CMSMicroservice.WebApi/CMSMicroservice.WebApi.csproj b/src/CMSMicroservice.WebApi/CMSMicroservice.WebApi.csproj
index c82c6a7..a9f4cc3 100644
--- a/src/CMSMicroservice.WebApi/CMSMicroservice.WebApi.csproj
+++ b/src/CMSMicroservice.WebApi/CMSMicroservice.WebApi.csproj
@@ -14,6 +14,7 @@
+
diff --git a/src/CMSMicroservice.WebApi/Common/Mappings/NetworkMembershipProfile.cs b/src/CMSMicroservice.WebApi/Common/Mappings/NetworkMembershipProfile.cs
new file mode 100644
index 0000000..73d4c2a
--- /dev/null
+++ b/src/CMSMicroservice.WebApi/Common/Mappings/NetworkMembershipProfile.cs
@@ -0,0 +1,65 @@
+using CMSMicroservice.Application.NetworkMembershipCQ.Queries.GetNetworkTree;
+using CMSMicroservice.Protobuf.Protos.NetworkMembership;
+using CMSMicroservice.Domain.Enums;
+
+namespace CMSMicroservice.WebApi.Common.Mappings;
+
+public class NetworkMembershipProfile : IRegister
+{
+ void IRegister.Register(TypeAdapterConfig config)
+ {
+ // Request mapping
+ config.NewConfig()
+ .Map(dest => dest.UserId, src => src.UserId)
+ .Map(dest => dest.MaxDepth, src => src.MaxDepth != null && src.MaxDepth.Value > 0 ? src.MaxDepth.Value : 3);
+
+ // Response mapping: تبدیل درخت به لیست مسطح
+ config.NewConfig()
+ .MapWith(src => ConvertTreeToResponse(src));
+ }
+
+ private static GetNetworkTreeResponse ConvertTreeToResponse(NetworkTreeDto? treeDto)
+ {
+ var response = new GetNetworkTreeResponse();
+
+ if (treeDto == null)
+ {
+ return response;
+ }
+
+ // تبدیل درخت به لیست مسطح
+ FlattenTree(treeDto, response.Nodes, null);
+
+ return response;
+ }
+
+ private static void FlattenTree(NetworkTreeDto node, Google.Protobuf.Collections.RepeatedField nodesList, long? parentId)
+ {
+ var protoNode = new NetworkTreeNodeModel
+ {
+ UserId = node.UserId,
+ UserName = $"{node.FirstName} {node.LastName}".Trim(),
+ NetworkLeg = (int)(node.LegPosition ?? NetworkLeg.Left),
+ NetworkLevel = node.CurrentDepth,
+ IsActive = true
+ };
+
+ if (parentId.HasValue)
+ {
+ protoNode.ParentId = parentId.Value;
+ }
+
+ nodesList.Add(protoNode);
+
+ // بازگشتی برای فرزندان
+ if (node.LeftChild != null)
+ {
+ FlattenTree(node.LeftChild, nodesList, node.UserId);
+ }
+
+ if (node.RightChild != null)
+ {
+ FlattenTree(node.RightChild, nodesList, node.UserId);
+ }
+ }
+}
diff --git a/src/CMSMicroservice.WebApi/Services/NetworkMembershipService.cs b/src/CMSMicroservice.WebApi/Services/NetworkMembershipService.cs
index 0945459..1690065 100644
--- a/src/CMSMicroservice.WebApi/Services/NetworkMembershipService.cs
+++ b/src/CMSMicroservice.WebApi/Services/NetworkMembershipService.cs
@@ -41,6 +41,8 @@ public class NetworkMembershipService : NetworkMembershipContract.NetworkMembers
public override async Task GetNetworkTree(GetNetworkTreeRequest request, ServerCallContext context)
{
+
+ var x=request.Adapt();
return await _dispatchRequestToCQRS.Handle(request, context);
}