From f475242f847016eb0c5ad238729f0205a3792455 Mon Sep 17 00:00:00 2001 From: seaznCode Date: Sat, 17 Jan 2026 20:22:31 +0100 Subject: [PATCH] feat: update user status initialization to use 'pending' instead of 'inactive' --- controller/auth/UserStatusController.js | 2 +- repositories/status/UserStatusRepository.js | 5 +++-- scripts/createCompanyUser.js | 2 +- scripts/createPersonalUser.js | 2 +- services/admin/AdminService.js | 9 +++++++-- services/referral/ReferralService.js | 4 ++-- services/status/UserStatusService.js | 2 +- services/user/company/CompanyUserService.js | 2 +- services/user/personal/PersonalUserService.js | 2 +- 9 files changed, 18 insertions(+), 12 deletions(-) diff --git a/controller/auth/UserStatusController.js b/controller/auth/UserStatusController.js index a2affde..4c0711c 100644 --- a/controller/auth/UserStatusController.js +++ b/controller/auth/UserStatusController.js @@ -17,7 +17,7 @@ class UserStatusController { // If no status exists, create one with default values if (!status) { logger.info(`[UserStatusController] No status found for userId: ${userId}, creating default status`); - await userStatusRepo.initializeUserStatus(userId, 'inactive'); + await userStatusRepo.initializeUserStatus(userId, 'pending'); status = await userStatusRepo.getStatusByUserId(userId); } diff --git a/repositories/status/UserStatusRepository.js b/repositories/status/UserStatusRepository.js index f61ebe6..6f2f3e7 100644 --- a/repositories/status/UserStatusRepository.js +++ b/repositories/status/UserStatusRepository.js @@ -18,7 +18,7 @@ class UserStatusRepository { } } - async initializeUserStatus(userId, status = 'inactive') { + async initializeUserStatus(userId, status = 'pending') { logger.info('UserStatusRepository.initializeUserStatus:start', { userId, status }); try { const conn = this.unitOfWork.connection; @@ -57,7 +57,8 @@ class UserStatusRepository { const conn = this.unitOfWork.connection; await conn.query( `UPDATE user_status - SET registration_completed = TRUE, status = 'active' + SET registration_completed = TRUE, + status = CASE WHEN is_admin_verified = 1 THEN 'active' ELSE 'pending' END WHERE user_id = ?`, [userId] ); diff --git a/scripts/createCompanyUser.js b/scripts/createCompanyUser.js index 6a11ab3..bc9714f 100644 --- a/scripts/createCompanyUser.js +++ b/scripts/createCompanyUser.js @@ -46,7 +46,7 @@ async function createCompanyUser() { // Initialize user status (defaults: not verified, not completed) await uow.connection.query( `INSERT INTO user_status (user_id, status, is_admin_verified, email_verified, profile_completed, documents_uploaded, contract_signed) - VALUES (?, 'active', 0, 0, 0, 0, 0)`, + VALUES (?, 'pending', 0, 0, 0, 0, 0)`, [userId] ); diff --git a/scripts/createPersonalUser.js b/scripts/createPersonalUser.js index 20092b2..9eb746d 100644 --- a/scripts/createPersonalUser.js +++ b/scripts/createPersonalUser.js @@ -45,7 +45,7 @@ async function createPersonalUser() { // Initialize user status await uow.connection.query( `INSERT INTO user_status (user_id, status, is_admin_verified, email_verified, profile_completed, documents_uploaded, contract_signed) - VALUES (?, 'active', 0, 0, 0, 0, 0)`, + VALUES (?, 'pending', 0, 0, 0, 0, 0)`, [userId] ); diff --git a/services/admin/AdminService.js b/services/admin/AdminService.js index ffe56ac..7bb55ec 100644 --- a/services/admin/AdminService.js +++ b/services/admin/AdminService.js @@ -428,9 +428,14 @@ class AdminService { await unitOfWork.connection.query( `UPDATE user_status SET is_admin_verified = ?, - admin_verified_at = ? + admin_verified_at = ?, + status = CASE + WHEN status IN ('suspended','archived') THEN status + WHEN ? = 1 THEN 'active' + ELSE 'pending' + END WHERE user_id = ?`, - [isAdminVerified, timestamp, userId] + [isAdminVerified, timestamp, isAdminVerified, userId] ); logger.info('AdminService.updateUserVerification:success', { userId, isAdminVerified }); diff --git a/services/referral/ReferralService.js b/services/referral/ReferralService.js index b077927..efa979d 100644 --- a/services/referral/ReferralService.js +++ b/services/referral/ReferralService.js @@ -431,7 +431,7 @@ class ReferralService { const personalRepo = new PersonalUserRepository(unitOfWork); const user = await personalRepo.create(registrationData); - await UserStatusService.initializeUserStatus(user.id, 'personal', unitOfWork, 'inactive'); + await UserStatusService.initializeUserStatus(user.id, 'personal', unitOfWork, 'pending'); if (UserSettingsRepository) { const settingsRepo = new UserSettingsRepository(unitOfWork); @@ -479,7 +479,7 @@ class ReferralService { contactPersonPhone }); - await UserStatusService.initializeUserStatus(user.id, 'company', unitOfWork, 'inactive'); + await UserStatusService.initializeUserStatus(user.id, 'company', unitOfWork, 'pending'); if (UserSettingsRepository) { const settingsRepo = new UserSettingsRepository(unitOfWork); diff --git a/services/status/UserStatusService.js b/services/status/UserStatusService.js index c8ae32c..c51ce49 100644 --- a/services/status/UserStatusService.js +++ b/services/status/UserStatusService.js @@ -2,7 +2,7 @@ const UserStatusRepository = require('../../repositories/status/UserStatusReposi const { logger } = require('../../middleware/logger'); class UserStatusService { - static async initializeUserStatus(userId, userType, unitOfWork, status = 'inactive') { + static async initializeUserStatus(userId, userType, unitOfWork, status = 'pending') { logger.info('UserStatusService.initializeUserStatus:start', { userId, userType, status }); try { const repo = new UserStatusRepository(unitOfWork); diff --git a/services/user/company/CompanyUserService.js b/services/user/company/CompanyUserService.js index a7bf5f0..3447753 100644 --- a/services/user/company/CompanyUserService.js +++ b/services/user/company/CompanyUserService.js @@ -31,7 +31,7 @@ class CompanyUserService { logger.info('CompanyUserService.createCompanyUser:company_created', { companyId: newCompany.id }); // Initialize user status - await UserStatusService.initializeUserStatus(newCompany.id, 'company', unitOfWork, 'inactive'); + await UserStatusService.initializeUserStatus(newCompany.id, 'company', unitOfWork, 'pending'); logger.info('CompanyUserService.createCompanyUser:user_status_initialized', { companyId: newCompany.id }); // Send registration email to the new company user diff --git a/services/user/personal/PersonalUserService.js b/services/user/personal/PersonalUserService.js index 468f324..9c1e31b 100644 --- a/services/user/personal/PersonalUserService.js +++ b/services/user/personal/PersonalUserService.js @@ -31,7 +31,7 @@ class PersonalUserService { logger.info('PersonalUserService.createPersonalUser:user_created', { userId: newUser.id }); // Initialize user status - await UserStatusService.initializeUserStatus(newUser.id, 'personal', unitOfWork, 'inactive'); + await UserStatusService.initializeUserStatus(newUser.id, 'personal', unitOfWork, 'pending'); logger.info('PersonalUserService.createPersonalUser:user_status_initialized', { userId: newUser.id }); // Handle referral if provided