package com.hrs.controller.admin;

import com.hrs.dao.UserDao;
import com.hrs.dao.impl.UserDaoImpl;
import com.hrs.model.entity.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;

/**   
* Copyright: Copyright (c) 2026 chinasofti
* 
* @ClassName: AdminUserController.java
* @Description: 管理员用户管理控制器
*
* @version: v1.0.0
* @author: 李鑫
* @date: 2026年4月13日 上午8:54:18 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2026年4月13日     李鑫           v1.0.0               新建文件
*/
@WebServlet("/admin/user/list")
public class AdminUserController extends HttpServlet {
    
    private UserDao userDao = new UserDaoImpl();
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        
        // 检查登录状态和管理员权限
        HttpSession session = request.getSession(false);
        if (session == null) {
            response.sendRedirect(request.getContextPath() + "/user/login");
            return;
        }
        
        User loginUser = (User) session.getAttribute("loginUser");
        if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
            response.sendRedirect(request.getContextPath() + "/user/login");
            return;
        }
        
        // 获取所有用户
        List<User> allUsers = getAllUsers();
        
        // 分离不同角色
        List<User> tenants = new java.util.ArrayList<>();
        List<User> landlords = new java.util.ArrayList<>();
        List<User> admins = new java.util.ArrayList<>();
        
        for (User user : allUsers) {
            if ("0".equals(user.getRoleType())) {
                tenants.add(user);
            } else if ("1".equals(user.getRoleType())) {
                landlords.add(user);
            } else if ("2".equals(user.getRoleType())) {
                admins.add(user);
            }
        }
        
        request.setAttribute("tenants", tenants);
        request.setAttribute("landlords", landlords);
        request.setAttribute("admins", admins);
        request.setAttribute("totalCount", allUsers.size());
        request.setAttribute("loginUser", loginUser);
        
        request.getRequestDispatcher("/jsp/admin/user_list.jsp").forward(request, response);
    }
    
    private List<User> getAllUsers() {
        // 通过DAO获取所有用户
        // 注意：UserDAO中没有findAll方法，需要添加
        // 这里先用查询所有租客和房东的方式
        List<User> allUsers = new java.util.ArrayList<>();
        allUsers.addAll(userDao.findAllTenants());
        allUsers.addAll(userDao.findAllLandlords());
        // 手动添加管理员（管理员数量少，可以从数据库查）
        User admin = userDao.findByUsername("admin");
        if (admin != null) {
            allUsers.add(admin);
        }
        return allUsers;
    }
}