From 3f3e1c2a87e075ee0addea6ccb205f09ed3f8768 Mon Sep 17 00:00:00 2001
From: MeysamMoghaddam <65253484+MeysamMoghaddam@users.noreply.github.com>
Date: Mon, 13 Oct 2025 20:20:07 +0330
Subject: [PATCH] u
---
.../Shared/OrganizationChart.razor | 73 +------------------
.../Shared/OrganizationChart.razor.cs | 41 ++++++-----
.../Shared/OrganizationChartLevel.razor | 43 +++++++++++
.../Shared/OrganizationChartLevel.razor.cs | 38 ++++++++++
4 files changed, 105 insertions(+), 90 deletions(-)
create mode 100644 src/FrontOffice.Main/Shared/OrganizationChartLevel.razor
create mode 100644 src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs
diff --git a/src/FrontOffice.Main/Shared/OrganizationChart.razor b/src/FrontOffice.Main/Shared/OrganizationChart.razor
index 3f2abcb..b489eac 100644
--- a/src/FrontOffice.Main/Shared/OrganizationChart.razor
+++ b/src/FrontOffice.Main/Shared/OrganizationChart.razor
@@ -35,77 +35,10 @@
@if (_isExpanded && _currentUser?.Children?.Any() == true)
{
-
- @foreach (var child in _currentUser.Children)
- {
-
-
-
-
-
-
-
- @if (child.Children?.Any() == true)
- {
-
- }
-
-
-
@child.FirstName @child.LastName
-
-
- خرید شخصی:
- @(child.PersonalPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان")
-
-
- خرید تیمی:
- @(child.TeamPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان")
-
-
-
-
-
- @if (child.IsExpanded && child.Children?.Any() == true)
- {
-
- @foreach (var grandchild in child.Children)
- {
-
-
-
-
-
-
-
-
-
-
@grandchild.FirstName @grandchild.LastName
-
-
- خرید شخصی:
- @(grandchild.PersonalPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان")
-
-
- خرید تیمی:
- @(grandchild.TeamPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان")
-
-
-
-
-
- }
-
- }
-
- }
-
+
}
+
+
diff --git a/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs b/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs
index d9a5749..4b5abf7 100644
--- a/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs
+++ b/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs
@@ -1,4 +1,6 @@
-namespace FrontOffice.Main.Shared;
+using static FrontOffice.Main.Shared.OrganizationChartLevel;
+
+namespace FrontOffice.Main.Shared;
public partial class OrganizationChart
{
private UserNode? _currentUser;
@@ -38,7 +40,18 @@ public partial class OrganizationChart
FirstName = "سارا",
LastName = "کریمی",
PersonalPurchase = 1200000,
- TeamPurchase = 3200000
+ TeamPurchase = 3200000,
+ Children = new List
+ {
+ new UserNode
+ {
+ Id = 8,
+ FirstName = "نازنین",
+ LastName = "رضایی",
+ PersonalPurchase = 950000,
+ TeamPurchase = 2100000
+ }
+ }
},
new UserNode
{
@@ -89,17 +102,17 @@ public partial class OrganizationChart
StateHasChanged();
}
- private void ToggleChildExpand(long userId)
+ public void ToggleNodeExpand(long userId)
{
- var child = FindChild(_currentUser, userId);
- if (child != null)
+ var node = FindNode(_currentUser, userId);
+ if (node != null)
{
- child.IsExpanded = !child.IsExpanded;
+ node.IsExpanded = !node.IsExpanded;
StateHasChanged();
}
}
- private UserNode? FindChild(UserNode? node, long userId)
+ private UserNode? FindNode(UserNode? node, long userId)
{
if (node == null) return null;
if (node.Id == userId) return node;
@@ -108,23 +121,11 @@ public partial class OrganizationChart
{
foreach (var child in node.Children)
{
- var found = FindChild(child, userId);
+ var found = FindNode(child, userId);
if (found != null) return found;
}
}
return null;
}
-
- public class UserNode
- {
- public long Id { get; set; }
- public string? FirstName { get; set; }
- public string? LastName { get; set; }
- public string? Avatar { get; set; }
- public long? PersonalPurchase { get; set; }
- public long? TeamPurchase { get; set; }
- public List? Children { get; set; }
- public bool IsExpanded { get; set; }
- }
}
\ No newline at end of file
diff --git a/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor
new file mode 100644
index 0000000..54ead03
--- /dev/null
+++ b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor
@@ -0,0 +1,43 @@
+
+
+ @foreach (var node in Nodes)
+ {
+
+
+
+
+
+
+
+ @if (node.Children?.Any() == true)
+ {
+
+ }
+
+
+
@node.FirstName @node.LastName
+
+
+ خرید شخصی:
+ @(node.PersonalPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان")
+
+
+ خرید تیمی:
+ @(node.TeamPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان")
+
+
+
+
+
+ @if (node.IsExpanded && node.Children?.Any() == true)
+ {
+
+ }
+
+ }
+
+
diff --git a/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs
new file mode 100644
index 0000000..6b27733
--- /dev/null
+++ b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs
@@ -0,0 +1,38 @@
+using Microsoft.AspNetCore.Components;
+using MudBlazor;
+
+namespace FrontOffice.Main.Shared;
+public partial class OrganizationChartLevel
+{
+ [Parameter] public List? Nodes { get; set; }
+ [Parameter] public int Level { get; set; } = 1;
+
+ [CascadingParameter] private OrganizationChart ParentChart { get; set; } = default!;
+
+ private Size GetAvatarSize(int level)
+ {
+ return level switch
+ {
+ 1 => Size.Large,
+ 2 => Size.Medium,
+ _ => Size.Small
+ };
+ }
+
+ private void ToggleNodeExpand(long userId)
+ {
+ ParentChart.ToggleNodeExpand(userId);
+ }
+
+ public class UserNode
+ {
+ public long Id { get; set; }
+ public string? FirstName { get; set; }
+ public string? LastName { get; set; }
+ public string? Avatar { get; set; }
+ public long? PersonalPurchase { get; set; }
+ public long? TeamPurchase { get; set; }
+ public List? Children { get; set; }
+ public bool IsExpanded { get; set; }
+ }
+}
\ No newline at end of file