From c3461c2dd9938813fd430ad46d73b166f5842630 Mon Sep 17 00:00:00 2001 From: seaznCode Date: Sat, 11 Oct 2025 19:47:11 +0200 Subject: [PATCH] Refactor UserStatusController and related services for improved status handling and repository paths --- controller/auth/UserStatusController.js | 22 ++++++++++++++----- .../user/company/CompanyUserRepository.js | 2 ++ scripts/createAdminUser.js | 3 ++- services/contracts/ContractUploadService.js | 2 +- .../personal/PersonalDocumentService.js | 2 +- .../profile/company/CompanyProfileService.js | 2 +- .../personal/PersonalProfileService.js | 2 +- 7 files changed, 24 insertions(+), 11 deletions(-) diff --git a/controller/auth/UserStatusController.js b/controller/auth/UserStatusController.js index cfbc92d..a2affde 100644 --- a/controller/auth/UserStatusController.js +++ b/controller/auth/UserStatusController.js @@ -1,5 +1,5 @@ const UnitOfWork = require('../../database/UnitOfWork'); -const UserStatusRepository = require('../../repositories/user/UserRepository'); +const UserStatusRepository = require('../../repositories/status/UserStatusRepository'); const UserStatusService = require('../../services/status/UserStatusService'); const { logger } = require('../../middleware/logger'); @@ -12,13 +12,23 @@ class UserStatusController { unitOfWork.registerRepository('userStatus', new UserStatusRepository(unitOfWork)); try { const userStatusRepo = unitOfWork.getRepository('userStatus'); - const status = await userStatusRepo.getStatusByUserId(userId); - await unitOfWork.commit(); + let status = await userStatusRepo.getStatusByUserId(userId); + + // If no status exists, create one with default values if (!status) { - logger.warn(`[UserStatusController] No status found for userId: ${userId}`); - return res.status(404).json({ success: false, message: 'User status not found' }); + logger.info(`[UserStatusController] No status found for userId: ${userId}, creating default status`); + await userStatusRepo.initializeUserStatus(userId, 'inactive'); + status = await userStatusRepo.getStatusByUserId(userId); } - logger.info(`[UserStatusController] getStatus success for userId: ${userId}`); + + await unitOfWork.commit(); + + if (!status) { + logger.warn(`[UserStatusController] Failed to create status for userId: ${userId}`); + return res.status(500).json({ success: false, message: 'Failed to initialize user status' }); + } + + logger.info(`[UserStatusController] getStatus success for userId: ${userId}`, { status }); return res.json({ success: true, status }); } catch (error) { logger.error(`[UserStatusController] getStatus error for userId: ${userId}`, { error }); diff --git a/repositories/user/company/CompanyUserRepository.js b/repositories/user/company/CompanyUserRepository.js index a9643c5..9abec54 100644 --- a/repositories/user/company/CompanyUserRepository.js +++ b/repositories/user/company/CompanyUserRepository.js @@ -192,6 +192,8 @@ class CompanyUserRepository { throw error; } } + + } module.exports = CompanyUserRepository; \ No newline at end of file diff --git a/scripts/createAdminUser.js b/scripts/createAdminUser.js index d7808f8..ddefda7 100644 --- a/scripts/createAdminUser.js +++ b/scripts/createAdminUser.js @@ -3,7 +3,8 @@ const UnitOfWork = require('../database/UnitOfWork'); const argon2 = require('argon2'); async function createAdminUser() { - const adminEmail = process.env.ADMIN_EMAIL || 'office@profit-planet.com'; + // const adminEmail = process.env.ADMIN_EMAIL || 'office@profit-planet.com'; + const adminEmail = process.env.ADMIN_EMAIL || 'loki.aahi@gmail.com'; const adminPassword = process.env.ADMIN_PASSWORD || 'W.profit-planet.com.2025'; // Set a secure password in production! const firstName = process.env.ADMIN_FIRST_NAME || 'Admin'; const lastName = process.env.ADMIN_LAST_NAME || 'User'; diff --git a/services/contracts/ContractUploadService.js b/services/contracts/ContractUploadService.js index 9a65c24..cf1ed03 100644 --- a/services/contracts/ContractUploadService.js +++ b/services/contracts/ContractUploadService.js @@ -183,7 +183,7 @@ class ContractUploadService { logger.info('ContractUploadService.uploadContract:user_status_updated', { userId }); // Check if all steps are complete and set status to 'pending' if so - const UserStatusService = require('./UserStatusService'); + const UserStatusService = require('../status/UserStatusService'); await UserStatusService.checkAndSetPendingIfComplete(userId, unitOfWork); logger.info('ContractUploadService.uploadContract:pending_check_complete', { userId }); diff --git a/services/documents/personal/PersonalDocumentService.js b/services/documents/personal/PersonalDocumentService.js index 3a354f5..3c132b5 100644 --- a/services/documents/personal/PersonalDocumentService.js +++ b/services/documents/personal/PersonalDocumentService.js @@ -67,7 +67,7 @@ class PersonalDocumentService { logger.info('PersonalDocumentService.uploadPersonalId:user_status_updated', { userId }); // Check if all steps are complete and set status to 'pending' if so - const UserStatusService = require('./UserStatusService'); + const UserStatusService = require('../../status/UserStatusService'); await UserStatusService.checkAndSetPendingIfComplete(userId, unitOfWork); logger.info('PersonalDocumentService.uploadPersonalId:pending_check_complete', { userId }); diff --git a/services/profile/company/CompanyProfileService.js b/services/profile/company/CompanyProfileService.js index a13d458..2b39456 100644 --- a/services/profile/company/CompanyProfileService.js +++ b/services/profile/company/CompanyProfileService.js @@ -11,7 +11,7 @@ class CompanyProfileService { logger.info('CompanyProfileService.completeProfile:profile_completed', { userId }); // Check if all steps are complete and set status to 'pending' if so - const UserStatusService = require('./UserStatusService'); + const UserStatusService = require('../../status/UserStatusService'); await UserStatusService.checkAndSetPendingIfComplete(userId, unitOfWork); logger.info('CompanyProfileService.completeProfile:pending_check_complete', { userId }); logger.info('CompanyProfileService.completeProfile:success', { userId }); diff --git a/services/profile/personal/PersonalProfileService.js b/services/profile/personal/PersonalProfileService.js index 51efda3..87df410 100644 --- a/services/profile/personal/PersonalProfileService.js +++ b/services/profile/personal/PersonalProfileService.js @@ -6,7 +6,7 @@ class PersonalProfileService { logger.info('PersonalProfileService.completeProfile:start', { userId }); try { const repo = new PersonalUserRepository(unitOfWork); - await repo.updateAdditionalProfileAndMarkCompleted(userId, profileData); + await repo.updateProfileAndMarkCompleted(userId, profileData); logger.info('PersonalProfileService.completeProfile:profile_completed', { userId }); // Check if all steps are complete and set status to 'pending' if so