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.Prep;
import com.cn.service.PrepService;
import com.cn.service.impl.PrepServiceImpl;

/**
 * 
 * @ClassName: UpdatePrepAdminServlet 
 * @Description: 管理员修改订单的Servlet
 * @author: ljy
 * @date: 2019年9月28日 下午7:38:31
 */
public class UpdatePrepAdminServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * 处理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 {
        // 从请求中获取订单ID参数，并转换为Integer类型
        Integer prepId = Integer.valueOf(request.getParameter("prepId"));
        
        // 创建PrepService的实现类对象，用于访问订单相关的业务逻辑
        PrepService prepService = new PrepServiceImpl();
        // 根据订单ID获取订单对象
        Prep prep = prepService.getById(prepId);
        
        // 将订单对象设置为request属性，以便在JSP页面中可以访问
        request.setAttribute("prep", prep);
        
        // 转发请求到修改订单信息的JSP页面
        request.getRequestDispatcher("pages/admin/right/updatePrep.jsp").forward(request, response);
    }

    /**
     * 处理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 {
        
        // 从请求中获取修改界面的数据
        Integer prepId = Integer.valueOf(request.getParameter("prepId"));
        Integer price = Integer.valueOf(request.getParameter("price"));
        boolean way = Boolean.valueOf(request.getParameter("way"));
        
        // 创建PrepService的实现类对象
        PrepService prepService = new PrepServiceImpl();
        // 根据订单ID获取订单对象
        Prep prep = prepService.getById(prepId);
        
        // 更新订单对象的数据
        prep.setPrice(price);
        prep.setWay(way);
        
        // 更新订单对象到数据库
        int recordNumber = prepService.update(prep);
        
        // 获取PrintWriter对象，用于向客户端发送响应
        PrintWriter out = response.getWriter();
        // 判断更新是否成功
        if(recordNumber == 1) {
            // 如果成功，弹出提示并跳转到所有订单的Servlet
            out.write("<script>alert('修改成功！');"
                    + "window.location.href='GetAllPrepServlet'</script>");
        } else {
            // 如果失败，弹出提示并跳转到所有订单的Servlet
            out.write("<script>alert('很抱歉,修改失败！');"
                    + "window.location.href='GetAllPrepServlet'</script>");
        }
        
        // 关闭PrintWriter对象
        out.close();
    }

}