package com.cn.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cn.domain.Admin;
import com.cn.service.AdminService;
import com.cn.service.impl.AdminServiceImpl;

/**
 * 
 * @ClassName: UpdateAdminPassword
 * @Description: 修改管理员密码的Servlet
 * @author: ljy
 * @date: 2019年9月29日 下午11:45:50
 */
public class UpdateAdminPassword extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * HttpServlet的构造函数。
     */
    public UpdateAdminPassword() {
        super();
        // 构造函数中的代码，通常不需要自定义操作，因为父类已经处理
    }

    /**
     * 处理GET请求的方法。
     * 当客户端发送GET请求到此Servlet时，这个方法会被调用。
     * @param request HttpServletRequest对象，包含客户端请求信息。
     * @param response HttpServletResponse对象，用于发送响应到客户端。
     * @throws ServletException 可能抛出的Servlet异常。
     * @throws IOException 可能抛出的IO异常。
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * 处理POST请求的方法。
     * 当客户端发送POST请求到此Servlet时，这个方法会被调用。
     * @param request HttpServletRequest对象，包含客户端请求信息。
     * @param response HttpServletResponse对象，用于发送响应到客户端。
     * @throws ServletException 可能抛出的Servlet异常。
     * @throws IOException 可能抛出的IO异常。
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        // 从请求中获取旧密码和新密码参数
        String oldPassword = request.getParameter("oldPassword");
        String newPassword = request.getParameter("newPassword");
        
        // 从Session中获取当前登录的管理员对象
        Admin admin = (Admin) request.getSession().getAttribute("admin");
        
        // 获取PrintWriter对象，用于向客户端发送响应
        PrintWriter out = response.getWriter();
        
        // 判断原密码是否正确
        if(oldPassword != null && oldPassword.equals(admin.getPassword())) {
            // 原密码正确，更新管理员密码
            admin.setPassword(newPassword);
            // 创建AdminService的实现类对象，用于访问管理员相关的业务逻辑
            AdminService adminService = new AdminServiceImpl();
            // 更新管理员密码
            int recordNumber = adminService.updateAdmin(admin);
            
            if(recordNumber == 1) {
                // 更新成功，弹出提示并跳转到管理界面
                out.write("<script>alert('修改密码成功！');"
                        + "window.self.href='pages/admin/adminMain.jsp'</script>");
            } else {
                // 更新失败，弹出提示并跳转到管理界面
                out.write("<script>alert('很抱歉,修改密码失败！');"
                        + "window.self.href='pages/admin/adminMain.jsp'</script>");
            }
            
        } else {
            // 原密码错误，弹出提示并跳转到管理界面
            out.write("<script>alert('原密码错误，请重新输入！');"
                    + "window.self.href='pages/admin/adminMain.jsp'</script>");
        }
        
        // 关闭PrintWriter对象
        out.close();
    }

}