From 7c3ee765d4f5dee81ca725108a3844e45ab0b3e7 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Thu, 24 Sep 2026 19:53:57 +0330 Subject: [PATCH] feat(reports): enhance weekly and ledger transaction reports with additional package and user details - Added 'PackageTitle' to the weekly reports for better clarity on package information. - Updated CSV export for weekly reports to include package details. - Introduced 'UserId' and 'UserFullName' columns in ledger transaction reports for improved user tracking. - Modified CSV export for ledger transactions to reflect new user information. - Bumped Foursat.CMSMicroservice.Protobuf version to 0.0.214 for compatibility with recent changes. --- src/BackOffice/BackOffice.csproj | 2 +- .../Pages/Commission/WeeklyReports.razor | 9 +++++++++ .../Pages/Commission/WeeklyReports.razor.cs | 3 ++- .../Pages/Payment/LedgerTransactions.razor | 14 ++++++++++++-- src/BackOffice/Pages/Payment/Transactions.razor | 9 +++++++-- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/BackOffice/BackOffice.csproj b/src/BackOffice/BackOffice.csproj index 4fc3546..080f774 100644 --- a/src/BackOffice/BackOffice.csproj +++ b/src/BackOffice/BackOffice.csproj @@ -143,7 +143,7 @@ - + diff --git a/src/BackOffice/Pages/Commission/WeeklyReports.razor b/src/BackOffice/Pages/Commission/WeeklyReports.razor index b97d595..75df16b 100644 --- a/src/BackOffice/Pages/Commission/WeeklyReports.razor +++ b/src/BackOffice/Pages/Commission/WeeklyReports.razor @@ -65,6 +65,11 @@ SortMode="SortMode.Multiple"> + + + @(string.IsNullOrEmpty(context.Item.PackageTitle) ? "—" : context.Item.PackageTitle) + + @context.Item.TotalPoolAmount.ToString("N0") تومان @@ -203,6 +208,8 @@ { WeekDefinitionId = x.WeekDefinitionId, WeekDisplayName = x.WeekDisplayName, + PackageId = x.PackageId, + PackageTitle = x.PackageTitle, TotalPoolAmount = x.TotalPoolAmount, TotalBalances = x.TotalBalances, ValuePerBalance = x.ValuePerBalance, @@ -249,6 +256,8 @@ { public long WeekDefinitionId { get; set; } public string WeekDisplayName { get; set; } = ""; + public long PackageId { get; set; } + public string PackageTitle { get; set; } = ""; public long TotalPoolAmount { get; set; } public int TotalBalances { get; set; } public long ValuePerBalance { get; set; } diff --git a/src/BackOffice/Pages/Commission/WeeklyReports.razor.cs b/src/BackOffice/Pages/Commission/WeeklyReports.razor.cs index d9a8ff1..fb5f12d 100644 --- a/src/BackOffice/Pages/Commission/WeeklyReports.razor.cs +++ b/src/BackOffice/Pages/Commission/WeeklyReports.razor.cs @@ -18,12 +18,13 @@ public partial class WeeklyReports try { var sb = new StringBuilder(); - sb.AppendLine("هفته,مبلغ کل استخر,مجموع موجودی‌ها,ارزش هر موجودی,وضعیت,تاریخ محاسبه"); + sb.AppendLine("هفته,پکیج,مبلغ کل استخر,مجموع موجودی‌ها,ارزش هر موجودی,وضعیت,تاریخ محاسبه"); foreach (var r in _reports) { sb.AppendLine(string.Join(",", EscapeCsv(r.WeekDisplayName), + EscapeCsv(r.PackageTitle), r.TotalPoolAmount, r.TotalBalances, r.ValuePerBalance, diff --git a/src/BackOffice/Pages/Payment/LedgerTransactions.razor b/src/BackOffice/Pages/Payment/LedgerTransactions.razor index 5448f2a..f19cbd7 100644 --- a/src/BackOffice/Pages/Payment/LedgerTransactions.razor +++ b/src/BackOffice/Pages/Payment/LedgerTransactions.razor @@ -96,6 +96,16 @@ + + + @(context.Item.UserId != null ? context.Item.UserId.ToString() : "—") + + + + + @(string.IsNullOrWhiteSpace(context.Item.UserFullName) ? "—" : context.Item.UserFullName) + + @@ -232,13 +242,13 @@ Filter = BuildFilter() }); var sb = new System.Text.StringBuilder(); - sb.AppendLine("Id,Type,Amount,Description,Status,RefId,PaymentDate,Created"); + sb.AppendLine("Id,UserId,UserFullName,Type,Amount,Description,Status,RefId,PaymentDate,Created"); foreach (var r in result.Models) { var type = r.HasType ? ReportLabels.GetTransactionTypeLabel(r.Type) : ""; var status = r.HasPaymentStatus ? ReportLabels.GetTransactionPaymentStatusLabel(r.PaymentStatus) : ""; var paymentDate = r.PaymentDate != null ? r.PaymentDate.ToDateTime().ToString("yyyy-MM-dd HH:mm") : ""; - sb.AppendLine($"{r.Id},{type},{r.Amount},\"{r.Description}\",{status},{r.RefId},{paymentDate},{r.Created.ToDateTime():yyyy-MM-dd HH:mm}"); + sb.AppendLine($"{r.Id},{r.UserId},\"{r.UserFullName}\",{type},{r.Amount},\"{r.Description}\",{status},{r.RefId},{paymentDate},{r.Created.ToDateTime():yyyy-MM-dd HH:mm}"); } await jsRuntime.InvokeVoidAsync("jsSaveAsFile", "ledger-transactions.csv", sb.ToString()); } diff --git a/src/BackOffice/Pages/Payment/Transactions.razor b/src/BackOffice/Pages/Payment/Transactions.razor index f25ecd1..9967301 100644 --- a/src/BackOffice/Pages/Payment/Transactions.razor +++ b/src/BackOffice/Pages/Payment/Transactions.razor @@ -82,6 +82,11 @@ + + + @(string.IsNullOrWhiteSpace(context.Item.UserFullName) ? "—" : context.Item.UserFullName) + + @@ -193,9 +198,9 @@ Filter = BuildFilter() }); var sb = new System.Text.StringBuilder(); - sb.AppendLine("Id,UserId,Mobile,Gateway,Amount,Authority,RefId,Status,OrderId,Created"); + sb.AppendLine("Id,UserId,UserFullName,Mobile,Gateway,Amount,Authority,RefId,Status,OrderId,Created"); foreach (var r in result.Models) - sb.AppendLine($"{r.Id},{r.UserId},{r.Mobile},{r.GatewayProvider},{r.Amount},{r.Authority},{r.RefId},{r.PaymentStatus},{r.OrderId},{r.CreatedAt.ToDateTime():yyyy-MM-dd HH:mm}"); + sb.AppendLine($"{r.Id},{r.UserId},\"{r.UserFullName}\",{r.Mobile},{r.GatewayProvider},{r.Amount},{r.Authority},{r.RefId},{r.PaymentStatus},{r.OrderId},{r.CreatedAt.ToDateTime():yyyy-MM-dd HH:mm}"); await jsRuntime.InvokeVoidAsync("jsSaveAsFile", "payment-transactions.csv", sb.ToString()); } catch (Exception ex) { Snackbar.Add($"خطا در export: {ex.Message}", Severity.Error); }