From 6b72e88780c2c5f81a3daad572f16aa682443488 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sun, 14 Dec 2025 04:15:22 +0330 Subject: [PATCH] feat: add club activation fields to network membership --- .../GetNetworkTree/GetNetworkTreeQuery.cs | 10 +++++++++ .../GetNetworkTreeResponseDto.cs | 21 +++++++++++++++++++ .../BackOffice.BFF.Domain.csproj | 2 +- .../Mappings/NetworkMembershipProfile.cs | 17 +++++++++++++++ ...fice.BFF.NetworkMembership.Protobuf.csproj | 2 +- .../Protos/networkmembership.proto | 7 +++++++ 6 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeQuery.cs b/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeQuery.cs index 8b72d88..d953684 100644 --- a/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeQuery.cs +++ b/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeQuery.cs @@ -16,4 +16,14 @@ public record GetNetworkTreeQuery : IRequest /// فقط کاربران فعال (اختیاری) /// public bool? OnlyActive { get; init; } + + /// + /// فیلتر براساس وضعیت فعال بودن باشگاه مشتریان + /// + public bool? IsClubActive { get; init; } + + /// + /// فیلتر براساس شماره هفته فعالسازی (مثال: 2025-W05) + /// + public string? ActivationWeekNumber { get; init; } } diff --git a/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeResponseDto.cs b/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeResponseDto.cs index 13586a8..2f9a1e7 100644 --- a/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeResponseDto.cs +++ b/src/BackOffice.BFF.Application/NetworkMembershipCQ/Queries/GetNetworkTree/GetNetworkTreeResponseDto.cs @@ -44,4 +44,25 @@ public class NetworkTreeNodeDto /// تاریخ عضویت /// public DateTime? JoinedAt { get; set; } + + /// + /// تاریخ فعال‌سازی در باشگاه مشتریان + /// + public DateTime? ClubActivatedAt { get; set; } + + /// + /// وضعیت فعال بودن در باشگاه مشتریان + /// + public bool IsClubActive { get; set; } + public bool IsActivatedInTargetWeek { get; set; } + + /// + /// شماره هفته فعال‌سازی + /// + public string ActivationWeekNumber { get; set; } = string.Empty; + + /// + /// تاریخ ایجاد کاربر + /// + public DateTime? UserCreated { get; set; } } diff --git a/src/BackOffice.BFF.Domain/BackOffice.BFF.Domain.csproj b/src/BackOffice.BFF.Domain/BackOffice.BFF.Domain.csproj index 2a5269a..24aac9d 100644 --- a/src/BackOffice.BFF.Domain/BackOffice.BFF.Domain.csproj +++ b/src/BackOffice.BFF.Domain/BackOffice.BFF.Domain.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/BackOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs b/src/BackOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs index b3dd8a8..dca8672 100644 --- a/src/BackOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs +++ b/src/BackOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs @@ -23,6 +23,15 @@ public class NetworkMembershipProfile : IRegister IsActive = n.IsActive, JoinedAt = n.JoinedAt.HasValue ? Timestamp.FromDateTime(DateTime.SpecifyKind(n.JoinedAt.Value, DateTimeKind.Utc)) + : null, + ClubActivatedAt = n.ClubActivatedAt.HasValue + ? Timestamp.FromDateTime(DateTime.SpecifyKind(n.ClubActivatedAt.Value, DateTimeKind.Utc)) + : null, + IsClubActive = n.IsClubActive, + ActivationWeekNumber = n.ActivationWeekNumber, + IsActivatedInTargetWeek =n.IsActivatedInTargetWeek, + UserCreated = n.UserCreated.HasValue + ? Timestamp.FromDateTime(DateTime.SpecifyKind(n.UserCreated.Value, DateTimeKind.Utc)) : null }) } }); @@ -39,6 +48,14 @@ public class NetworkMembershipProfile : IRegister IsActive = src.IsActive, JoinedAt = src.JoinedAt.HasValue ? Timestamp.FromDateTime(DateTime.SpecifyKind(src.JoinedAt.Value, DateTimeKind.Utc)) + : null, + ClubActivatedAt = src.ClubActivatedAt.HasValue + ? Timestamp.FromDateTime(DateTime.SpecifyKind(src.ClubActivatedAt.Value, DateTimeKind.Utc)) + : null, + IsClubActive = src.IsClubActive, + ActivationWeekNumber = src.ActivationWeekNumber, + UserCreated = src.UserCreated.HasValue + ? Timestamp.FromDateTime(DateTime.SpecifyKind(src.UserCreated.Value, DateTimeKind.Utc)) : null }); diff --git a/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/BackOffice.BFF.NetworkMembership.Protobuf.csproj b/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/BackOffice.BFF.NetworkMembership.Protobuf.csproj index ab1ae87..61a21b4 100644 --- a/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/BackOffice.BFF.NetworkMembership.Protobuf.csproj +++ b/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/BackOffice.BFF.NetworkMembership.Protobuf.csproj @@ -6,7 +6,7 @@ enable true Foursat.BackOffice.BFF.NetworkMembership.Protobuf - 0.0.7 + 0.0.9 FourSat FourSat Foursat.BackOffice.BFF.NetworkMembership.Protobuf diff --git a/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto b/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto index 83fa05c..ea40092 100644 --- a/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto +++ b/src/Protobufs/BackOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto @@ -155,6 +155,8 @@ message GetNetworkTreeRequest int64 user_id = 1; google.protobuf.Int32Value max_depth = 2; google.protobuf.BoolValue only_active = 3; + google.protobuf.BoolValue is_club_active = 4; + google.protobuf.StringValue activation_week_number = 5; } message GetNetworkTreeResponse @@ -171,6 +173,11 @@ message NetworkTreeNodeModel google.protobuf.Int32Value network_level = 5; google.protobuf.BoolValue is_active = 6; google.protobuf.Timestamp joined_at = 7; + google.protobuf.Timestamp club_activated_at = 8; // تاریخ فعال‌سازی در باشگاه + bool is_club_active = 9; // فعال بودن در باشگاه + string activation_week_number = 10; // شماره هفته فعال‌سازی + bool is_activated_in_target_week = 11; // آیا در هفته هدف فعال شده + google.protobuf.Timestamp user_created = 12; // تاریخ ایجاد کاربر } // GetHistory Query