Merge pull request 'Refactor UserStatusController and related services for improved status handling and repository paths' (#1) from quickaction-dashboard-changes into main

Reviewed-on: #1
This commit is contained in:
Seazn 2025-10-12 12:09:45 +00:00
commit 863008b544
7 changed files with 24 additions and 11 deletions

View File

@ -1,5 +1,5 @@
const UnitOfWork = require('../../database/UnitOfWork'); const UnitOfWork = require('../../database/UnitOfWork');
const UserStatusRepository = require('../../repositories/user/UserRepository'); const UserStatusRepository = require('../../repositories/status/UserStatusRepository');
const UserStatusService = require('../../services/status/UserStatusService'); const UserStatusService = require('../../services/status/UserStatusService');
const { logger } = require('../../middleware/logger'); const { logger } = require('../../middleware/logger');
@ -12,13 +12,23 @@ class UserStatusController {
unitOfWork.registerRepository('userStatus', new UserStatusRepository(unitOfWork)); unitOfWork.registerRepository('userStatus', new UserStatusRepository(unitOfWork));
try { try {
const userStatusRepo = unitOfWork.getRepository('userStatus'); const userStatusRepo = unitOfWork.getRepository('userStatus');
const status = await userStatusRepo.getStatusByUserId(userId); let status = await userStatusRepo.getStatusByUserId(userId);
await unitOfWork.commit();
// If no status exists, create one with default values
if (!status) { if (!status) {
logger.warn(`[UserStatusController] No status found for userId: ${userId}`); logger.info(`[UserStatusController] No status found for userId: ${userId}, creating default status`);
return res.status(404).json({ success: false, message: 'User status not found' }); 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 }); return res.json({ success: true, status });
} catch (error) { } catch (error) {
logger.error(`[UserStatusController] getStatus error for userId: ${userId}`, { error }); logger.error(`[UserStatusController] getStatus error for userId: ${userId}`, { error });

View File

@ -192,6 +192,8 @@ class CompanyUserRepository {
throw error; throw error;
} }
} }
} }
module.exports = CompanyUserRepository; module.exports = CompanyUserRepository;

View File

@ -3,7 +3,8 @@ const UnitOfWork = require('../database/UnitOfWork');
const argon2 = require('argon2'); const argon2 = require('argon2');
async function createAdminUser() { 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 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 firstName = process.env.ADMIN_FIRST_NAME || 'Admin';
const lastName = process.env.ADMIN_LAST_NAME || 'User'; const lastName = process.env.ADMIN_LAST_NAME || 'User';

View File

@ -183,7 +183,7 @@ class ContractUploadService {
logger.info('ContractUploadService.uploadContract:user_status_updated', { userId }); logger.info('ContractUploadService.uploadContract:user_status_updated', { userId });
// Check if all steps are complete and set status to 'pending' if so // 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); await UserStatusService.checkAndSetPendingIfComplete(userId, unitOfWork);
logger.info('ContractUploadService.uploadContract:pending_check_complete', { userId }); logger.info('ContractUploadService.uploadContract:pending_check_complete', { userId });

View File

@ -67,7 +67,7 @@ class PersonalDocumentService {
logger.info('PersonalDocumentService.uploadPersonalId:user_status_updated', { userId }); logger.info('PersonalDocumentService.uploadPersonalId:user_status_updated', { userId });
// Check if all steps are complete and set status to 'pending' if so // 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); await UserStatusService.checkAndSetPendingIfComplete(userId, unitOfWork);
logger.info('PersonalDocumentService.uploadPersonalId:pending_check_complete', { userId }); logger.info('PersonalDocumentService.uploadPersonalId:pending_check_complete', { userId });

View File

@ -11,7 +11,7 @@ class CompanyProfileService {
logger.info('CompanyProfileService.completeProfile:profile_completed', { userId }); logger.info('CompanyProfileService.completeProfile:profile_completed', { userId });
// Check if all steps are complete and set status to 'pending' if so // 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); await UserStatusService.checkAndSetPendingIfComplete(userId, unitOfWork);
logger.info('CompanyProfileService.completeProfile:pending_check_complete', { userId }); logger.info('CompanyProfileService.completeProfile:pending_check_complete', { userId });
logger.info('CompanyProfileService.completeProfile:success', { userId }); logger.info('CompanyProfileService.completeProfile:success', { userId });

View File

@ -6,7 +6,7 @@ class PersonalProfileService {
logger.info('PersonalProfileService.completeProfile:start', { userId }); logger.info('PersonalProfileService.completeProfile:start', { userId });
try { try {
const repo = new PersonalUserRepository(unitOfWork); const repo = new PersonalUserRepository(unitOfWork);
await repo.updateAdditionalProfileAndMarkCompleted(userId, profileData); await repo.updateProfileAndMarkCompleted(userId, profileData);
logger.info('PersonalProfileService.completeProfile:profile_completed', { userId }); logger.info('PersonalProfileService.completeProfile:profile_completed', { userId });
// Check if all steps are complete and set status to 'pending' if so // Check if all steps are complete and set status to 'pending' if so