feat: add IsActive field to UserClubFeatures for admin management

This commit is contained in:
masoodafar-web
2025-12-12 01:40:26 +03:30
parent aa66ca10c8
commit ff1c1d5d61
68 changed files with 11456 additions and 198 deletions

View File

@@ -50,6 +50,19 @@ service ClubMembershipContract
get: "/ClubMembership/GetStatistics"
};
};
// New: Admin Club Feature Management
rpc GetUserClubFeatures(GetUserClubFeaturesRequest) returns (GetUserClubFeaturesResponse){
option (google.api.http) = {
get: "/ClubFeature/GetUserFeatures"
};
};
rpc ToggleUserClubFeature(ToggleUserClubFeatureRequest) returns (ToggleUserClubFeatureResponse){
option (google.api.http) = {
post: "/ClubFeature/ToggleFeature"
body: "*"
};
};
}
// Activate Command
@@ -205,3 +218,43 @@ message MonthlyMembershipTrend
int32 expirations = 3;
int32 net_change = 4;
}
// GetUserClubFeatures Query
message GetUserClubFeaturesRequest
{
int64 user_id = 1;
}
message GetUserClubFeaturesResponse
{
repeated UserClubFeatureModel features = 1;
}
message UserClubFeatureModel
{
int64 id = 1;
int64 user_id = 2;
int64 club_membership_id = 3;
int64 club_feature_id = 4;
string feature_title = 5;
string feature_description = 6;
bool is_active = 7;
google.protobuf.Timestamp granted_at = 8;
string notes = 9;
}
// ToggleUserClubFeature Command
message ToggleUserClubFeatureRequest
{
int64 user_id = 1;
int64 club_feature_id = 2;
bool is_active = 3;
}
message ToggleUserClubFeatureResponse
{
bool success = 1;
string message = 2;
google.protobuf.Int64Value user_club_feature_id = 3;
google.protobuf.BoolValue is_active = 4;
}

View File

@@ -105,6 +105,11 @@ service CommissionContract
get: "/Commission/GetWorkerLogs"
};
};
rpc GetAvailableWeeks(GetAvailableWeeksRequest) returns (GetAvailableWeeksResponse){
option (google.api.http) = {
get: "/Commission/GetAvailableWeeks"
};
};
// Financial Reports
rpc GetWithdrawalReports(GetWithdrawalReportsRequest) returns (GetWithdrawalReportsResponse){
@@ -247,9 +252,39 @@ message CommissionPayoutHistoryModel
int32 action = 9; // CommissionPayoutAction enum
string performed_by = 10;
string reason = 11;
google.protobuf.Timestamp created = 12;
google.protobuf.Timestamp created = 13;
}
// ============ GetAvailableWeeks ============
message GetAvailableWeeksRequest
{
int32 future_weeks_count = 1; // تعداد هفته‌های آینده (پیش‌فرض: 4)
int32 past_weeks_count = 2; // تعداد هفته‌های گذشته (پیش‌فرض: 12)
}
message GetAvailableWeeksResponse
{
WeekInfo current_week = 1;
repeated WeekInfo calculated_weeks = 2;
repeated WeekInfo pending_weeks = 3;
repeated WeekInfo future_weeks = 4;
}
message WeekInfo
{
string week_number = 1; // YYYY-Www format
google.protobuf.Timestamp start_date = 2;
google.protobuf.Timestamp end_date = 3;
bool is_calculated = 4;
google.protobuf.Timestamp calculated_at = 5;
string last_execution_status = 6;
int64 total_pool_amount = 7;
int32 eligible_users_count = 8;
string display_text = 9; // نمایش فارسی برای UI
}
// GetUserWeeklyBalances Query
message GetUserWeeklyBalancesRequest
{