import { Context, Next } from 'hono';
import { UserService } from '../modules/users/user.service';
import { AppDataSource } from '../data-source';
import { AuthContext } from '../types/context';
import { UserType } from '../modules/users/user.enum';

/**
 * 认证后立即检查的中间件版本
 * 在认证成功后立即检查学员过期状态
 */
export async function immediateTraineeExpiryMiddleware(c: Context<AuthContext>, next: Next) {
  const user = c.get('user');
  
  // 在认证成功后立即检查学员过期状态
  if (user && user.userType === UserType.TRAINEE) {
    try {
      const userService = new UserService(AppDataSource);
      const statusUpdated = await userService.checkAndUpdateTraineeStatus(user.id);
      
      // 如果状态已更新，需要更新上下文中的用户信息
      if (statusUpdated) {
        const updatedUser = await userService.getUserById(user.id);
        if (updatedUser) {
          c.set('user', updatedUser);
        }
      }
    } catch (error) {
      console.error('立即学员过期检查失败:', error);
    }
  }
  
  await next();
}