package servlet.admin;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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 java.sql.Connection;

import javabean.Base;
import javabean.Util;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * Servlet 实现类，用于处理管理员信息修改操作
 *
 * 该 Servlet 处理管理员信息修改的请求，根据传入的 ID 更新管理员的名称、密码和邮箱等信息。
 */
@WebServlet("/admin/managerEdit")
public class ManagerEdit extends HttpServlet {

	/**
	 * 处理 POST 请求，修改指定 ID 的管理员信息
	 *
	 * 该方法会接收管理员的 ID、名称、密码和邮箱信息，更新数据库中对应的管理员记录，并返回修改结果。
	 *
	 * @param req 请求对象
	 * @param resp 响应对象
	 * @throws ServletException 如果发生 Servlet 错误
	 * @throws IOException 如果发生 I/O 错误
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 设置响应内容类型为 JSON
		resp.setContentType("application/json; charset=utf8");

		// 获取请求中的参数
		String id = req.getParameter("id");
		String name = req.getParameter("name");
		String password = req.getParameter("password");
		String email = req.getParameter("email");

		// 返回的响应参数
		String sql = "";
		Connection connection = null;
		PreparedStatement pstmt = null;
		ResultSet resultSet = null;
		int result = 0;
		int code = 1;
		String msg = "";
		PrintWriter out = resp.getWriter();

		// 如果参数为空，返回错误信息
		if (name == null || name.equals("") || password == null || password.equals("") || email == null || email.equals("")) {
			msg = "参数不能为空";
			out.print(Util.jsonResponse(code, msg, null));
		} else {
			try {
				// 获取数据库连接
				connection = (Connection) Base.getConnection();

				// SQL 更新语句
				sql = "update manager set name=?, password=?, email=? where id=?";
				pstmt = connection.prepareStatement(sql);
				pstmt.setString(1, name);      // 设置名称
				pstmt.setString(2, password);  // 设置密码
				pstmt.setString(3, email);     // 设置邮箱
				pstmt.setString(4, id);        // 设置管理员 ID

				// 执行更新操作
				result = pstmt.executeUpdate();

				// 根据更新结果返回响应
				if (result == 1) {
					code = 0;
					msg = "修改成功";
				} else {
					msg = "修改失败";
				}
			} catch (ClassNotFoundException e) {
				msg = "class not found";
			} catch (SQLException e) {
				msg = "sql错误";
			} finally {
				// 关闭数据库资源
				try {
					Base.closeResource(connection, pstmt, resultSet);
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}

			// 返回 JSON 格式的响应
			out.print(Util.jsonResponse(code, msg, null));
		}
	}
}
