CentralBackend/controller/auth/UserStatusController.js
2025-09-07 12:44:01 +02:00

55 lines
2.5 KiB
JavaScript

const UnitOfWork = require('../../repositories/UnitOfWork');
const UserStatusRepository = require('../../repositories/UserStatusRepository');
const UserStatusService = require('../../services/UserStatusService'); // Add this import
const { logger } = require('../../middleware/logger'); // <-- import logger
class UserStatusController {
static async getStatus(req, res) {
const userId = req.user.userId;
logger.info(`[UserStatusController] getStatus called for userId: ${userId}`);
const unitOfWork = new UnitOfWork();
await unitOfWork.start();
unitOfWork.registerRepository('userStatus', new UserStatusRepository(unitOfWork));
try {
const userStatusRepo = unitOfWork.getRepository('userStatus');
const status = await userStatusRepo.getStatusByUserId(userId);
await unitOfWork.commit();
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] getStatus success for userId: ${userId}`);
return res.json({ success: true, status });
} catch (error) {
logger.error(`[UserStatusController] getStatus error for userId: ${userId}`, { error });
await unitOfWork.rollback(error);
return res.status(500).json({ success: false, message: 'Internal server error' });
}
}
static async getStatusProgress(req, res) {
const userId = req.user.userId;
logger.info(`[UserStatusController] getStatusProgress called for userId: ${userId}`);
const unitOfWork = new UnitOfWork();
await unitOfWork.start();
unitOfWork.registerRepository('userStatus', new UserStatusRepository(unitOfWork));
try {
// Use service to get progress details
const progress = await UserStatusService.getStatusProgress(userId, unitOfWork);
await unitOfWork.commit();
if (!progress) {
logger.warn(`[UserStatusController] No status found for userId: ${userId}`);
return res.status(404).json({ success: false, message: 'User status not found' });
}
logger.info(`[UserStatusController] getStatusProgress success for userId: ${userId}`);
return res.json({ success: true, progress });
} catch (error) {
logger.error(`[UserStatusController] getStatusProgress error for userId: ${userId}`, { error });
await unitOfWork.rollback(error);
return res.status(500).json({ success: false, message: 'Internal server error' });
}
}
}
module.exports = UserStatusController;