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
@@ -6,13 +6,13 @@
BEGIN TRANSACTION;
-- Step 1: Validation - Find users with more than 2 children (INVALID for binary tree)
-- Step 1: Validation - Find CMS.Users with more than 2 children (INVALID for binary tree)
-- این کاربران باید قبل از Migration بررسی شوند
SELECT
ParentId,
COUNT(*) as ChildCount,
STRING_AGG(CAST(Id AS VARCHAR), ', ') as ChildIds
FROM Users
FROM CMS.Users
WHERE ParentId IS NOT NULL
GROUP BY ParentId
HAVING COUNT(*) > 2;
@@ -20,8 +20,8 @@ HAVING COUNT(*) > 2;
-- اگر نتیجه‌ای بود، باید دستی تصمیم بگیرید کدام 2 فرزند باقی بمانند!
-- اگر نتیجه‌ای نبود، ادامه دهید:
-- Step 2: Copy ParentId → NetworkParentId for all users
UPDATE Users
-- Step 2: Copy ParentId → NetworkParentId for all CMS.Users
UPDATE CMS.Users
SET NetworkParentId = ParentId
WHERE ParentId IS NOT NULL
AND NetworkParentId IS NULL;
@@ -33,16 +33,16 @@ WITH RankedChildren AS (
Id,
ParentId,
ROW_NUMBER() OVER (PARTITION BY ParentId ORDER BY Id ASC) as ChildRank
FROM Users
FROM CMS.Users
WHERE ParentId IS NOT NULL
)
UPDATE Users
UPDATE CMS.Users
SET LegPosition = CASE
WHEN rc.ChildRank = 1 THEN 0 -- Left = 0 (enum value)
WHEN rc.ChildRank = 2 THEN 1 -- Right = 1 (enum value)
ELSE NULL -- اگر بیشتر از 2 فرزند بود (نباید اتفاق بیفته)
END
FROM Users u
FROM CMS.Users u
INNER JOIN RankedChildren rc ON u.Id = rc.Id;
-- Step 4: Validation - Check for orphaned nodes (Parent doesn't exist)
@@ -50,9 +50,9 @@ SELECT
Id,
NetworkParentId,
'Orphaned: Parent does not exist' as Issue
FROM Users
FROM CMS.Users
WHERE NetworkParentId IS NOT NULL
AND NetworkParentId NOT IN (SELECT Id FROM Users);
AND NetworkParentId NOT IN (SELECT Id FROM CMS.Users);
-- اگر Orphan یافت شد، باید آنها را NULL کنید یا Parent صحیح تخصیص دهید
@@ -62,7 +62,7 @@ SELECT
NetworkParentId,
COUNT(*) as ChildCount,
STRING_AGG(CAST(Id AS VARCHAR), ', ') as ChildIds
FROM Users
FROM CMS.Users
WHERE NetworkParentId IS NOT NULL
GROUP BY NetworkParentId
HAVING COUNT(*) > 2;
@@ -71,26 +71,26 @@ HAVING COUNT(*) > 2;
-- Step 6: Statistics
SELECT
'Total Users' as Metric,
'Total CMS.Users' as Metric,
COUNT(*) as Count
FROM Users
FROM CMS.Users
UNION ALL
SELECT
'Users with NetworkParentId',
'CMS.Users with NetworkParentId',
COUNT(*)
FROM Users
FROM CMS.Users
WHERE NetworkParentId IS NOT NULL
UNION ALL
SELECT
'Users with LegPosition Left',
'CMS.Users with LegPosition Left',
COUNT(*)
FROM Users
FROM CMS.Users
WHERE LegPosition = 0
UNION ALL
SELECT
'Users with LegPosition Right',
'CMS.Users with LegPosition Right',
COUNT(*)
FROM Users
FROM CMS.Users
WHERE LegPosition = 1;
-- Commit if validation passes