Files
CMS/src/dbbkup/Fix_WrongDaya_ToManual_PurchaseMethod.sql
T
masoodafar-web 8ec0910cdf
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 6m36s
feat(jwt): enhance JWT token generation with user address check
- Updated GenerateJwtTokenService to include IApplicationDbContext for accessing user addresses.
- Added logic to check if a user has an address and included this information as a claim in the generated JWT token.
- Improved overall token generation process by incorporating additional user data for better context.
2026-08-23 22:32:36 +03:30

158 lines
5.1 KiB
Transact-SQL

/*
Correct users wrongly marked as DayaLoan — should be Manual.
Affects:
- CMS.Users.PackagePurchaseMethod (1 → 3)
- CMS.ClubMemberships.PurchaseMethod (1 or 0 → 3)
- CMS.ClubMembershipCycles.PurchaseMethod (1 or 0 → 3)
- CMS.UserPackagePurchases.PurchaseMethod (1 → 3)
- CMS.Users.HasReceivedDayaCredit / DayaCreditReceivedAt clear
- CMS.DayaLoanContracts soft-delete stub rows
(IsProcessed=0, no TransactionId, no ProcessedDate)
for these UserIds only
PackagePurchaseMethod: None=0, DayaLoan=1, DirectPurchase=2, Manual=3
NOTE: UserId=43 shares NationalCode 5289780335 with UserId=42 (real Excel Daya).
This script only touches UserId=43's own rows — not UserId=42's contract.
Defaults to ROLLBACK. Uncomment COMMIT after verifying PRINT counts.
*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @FixUsers TABLE (UserId BIGINT PRIMARY KEY);
INSERT INTO @FixUsers (UserId) VALUES
(2),(7),(8),(9),(10),(11),(12),(13),(40),(41),(43),(45),(47),
(52),(58),(69),(71),(72),(74),(75),(87),(88),(89),(90),(91),(93),
(96),(99),(103),(105),(106),(111),(113),(115),(116),(119),(121),
(125),(130),(142),(162),(169),(170),(171),(172),(175),(176);
------------------------------------------------------------
-- 1) Users
------------------------------------------------------------
UPDATE u
SET
u.PackagePurchaseMethod = 3, -- Manual
u.HasReceivedDayaCredit = 0,
u.DayaCreditReceivedAt = NULL,
u.LastModified = SYSUTCDATETIME()
FROM CMS.Users u
INNER JOIN @FixUsers f ON f.UserId = u.Id
WHERE u.IsDeleted = 0
AND (
u.PackagePurchaseMethod = 1 -- DayaLoan
OR u.HasReceivedDayaCredit = 1
OR u.DayaCreditReceivedAt IS NOT NULL
);
PRINT CONCAT('Users updated: ', @@ROWCOUNT);
------------------------------------------------------------
-- 2) ClubMemberships
------------------------------------------------------------
UPDATE m
SET
m.PurchaseMethod = 3, -- Manual
m.LastModified = SYSUTCDATETIME()
FROM CMS.ClubMemberships m
INNER JOIN @FixUsers f ON f.UserId = m.UserId
WHERE m.IsDeleted = 0
AND m.PurchaseMethod IN (0, 1); -- None or DayaLoan
PRINT CONCAT('ClubMemberships updated: ', @@ROWCOUNT);
------------------------------------------------------------
-- 3) ClubMembershipCycles
------------------------------------------------------------
UPDATE c
SET
c.PurchaseMethod = 3, -- Manual
c.LastModified = SYSUTCDATETIME()
FROM CMS.ClubMembershipCycles c
INNER JOIN @FixUsers f ON f.UserId = c.UserId
WHERE c.IsDeleted = 0
AND c.PurchaseMethod IN (0, 1);
PRINT CONCAT('ClubMembershipCycles updated: ', @@ROWCOUNT);
------------------------------------------------------------
-- 4) UserPackagePurchases (incl. backfill rows)
------------------------------------------------------------
UPDATE upp
SET
upp.PurchaseMethod = 3, -- Manual
upp.LastModified = SYSUTCDATETIME()
FROM CMS.UserPackagePurchases upp
INNER JOIN @FixUsers f ON f.UserId = upp.UserId
WHERE upp.IsDeleted = 0
AND upp.PurchaseMethod = 1; -- only Daya → Manual (keep Direct=2 if any)
PRINT CONCAT('UserPackagePurchases updated: ', @@ROWCOUNT);
------------------------------------------------------------
-- 5) Soft-delete stub DayaLoanContracts (never processed)
------------------------------------------------------------
UPDATE d
SET
d.IsDeleted = 1,
d.LastModified = SYSUTCDATETIME()
FROM CMS.DayaLoanContracts d
INNER JOIN @FixUsers f ON f.UserId = d.UserId
WHERE d.IsDeleted = 0
AND d.IsProcessed = 0
AND d.TransactionId IS NULL
AND d.ProcessedDate IS NULL;
PRINT CONCAT('DayaLoanContracts soft-deleted (stubs): ', @@ROWCOUNT);
------------------------------------------------------------
-- Verify
------------------------------------------------------------
SELECT 'Users still Daya' AS CheckName, COUNT(*) AS Cnt
FROM CMS.Users u
INNER JOIN @FixUsers f ON f.UserId = u.Id
WHERE u.IsDeleted = 0 AND u.PackagePurchaseMethod = 1
UNION ALL
SELECT 'Club still Daya/None', COUNT(*)
FROM CMS.ClubMemberships m
INNER JOIN @FixUsers f ON f.UserId = m.UserId
WHERE m.IsDeleted = 0 AND m.PurchaseMethod IN (0, 1)
UNION ALL
SELECT 'Cycle still Daya/None', COUNT(*)
FROM CMS.ClubMembershipCycles c
INNER JOIN @FixUsers f ON f.UserId = c.UserId
WHERE c.IsDeleted = 0 AND c.PurchaseMethod IN (0, 1)
UNION ALL
SELECT 'UPP still Daya', COUNT(*)
FROM CMS.UserPackagePurchases upp
INNER JOIN @FixUsers f ON f.UserId = upp.UserId
WHERE upp.IsDeleted = 0 AND upp.PurchaseMethod = 1
UNION ALL
SELECT 'Active stub Daya contracts', COUNT(*)
FROM CMS.DayaLoanContracts d
INNER JOIN @FixUsers f ON f.UserId = d.UserId
WHERE d.IsDeleted = 0
AND d.IsProcessed = 0
AND d.TransactionId IS NULL
AND d.ProcessedDate IS NULL;
-- Sample after
SELECT u.Id AS UserId,
u.FirstName, u.LastName, u.Mobile,
u.PackagePurchaseMethod,
m.PurchaseMethod AS ClubPurchaseMethod
FROM CMS.Users u
INNER JOIN @FixUsers f ON f.UserId = u.Id
LEFT JOIN CMS.ClubMemberships m ON m.UserId = u.Id AND m.IsDeleted = 0
WHERE u.IsDeleted = 0
ORDER BY u.Id;
-- Uncomment to apply:
-- COMMIT;
ROLLBACK;
PRINT 'Rolled back (safety). Uncomment COMMIT and remove ROLLBACK to apply.';