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.Train;
import com.cn.service.TrainService;
import com.cn.service.impl.TrainServiceImpl;

/**
 * 
 * @ClassName: UpdateTrainServlet 
 * @Description: 管理员修改车次信息的Servlet
 * @author: ljy
 * @date: 2019年11月10日 下午11:49:16
 */
public class UpdateTrainServlet 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 trainId = Integer.valueOf(request.getParameter("trainId"));
        // 创建TrainService的实现类对象，用于访问车次相关的业务逻辑
        TrainService trainService = new TrainServiceImpl();
        // 根据车次ID获取车次对象
        Train train = trainService.getById(trainId);
        // 开车时间与到站时间格式转换为"yyyy-MM-ddThh:mm"，以符合JSP界面的显示要求
        String startTime = train.getStartTime();
        startTime = startTime.substring(0, 10)+"T"+startTime.substring(11, 16);
        train.setStartTime(startTime);
        String endTime = train.getEndTime();
        endTime = endTime.substring(0, 10)+"T"+endTime.substring(11, 16);
        train.setEndTime(endTime);
        
        // 将车次对象设置为request属性，以便在JSP页面中可以访问
        request.setAttribute("train", train);
        // 转发请求到修改车次信息的JSP页面
        request.getRequestDispatcher("pages/admin/right/updateTrain.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 {
        /**
         * 将修改后的车次信息保存到数据库，然后跳转到GetAllTrainServlet界面
         */
        
        // 获取界面中输入的数据
        Integer trainId = Integer.valueOf(request.getParameter("trainId"));
        String trainNumber = request.getParameter("trainNumber");
        String startStation = request.getParameter("startStation");
        String endStation = request.getParameter("endStation");
        String startTime = request.getParameter("startTime");
        startTime = startTime.substring(0, 10)+" "+startTime.substring(11)+":00";
        String endTime = request.getParameter("endTime");
        endTime = endTime.substring(0, 10)+" "+endTime.substring(11)+":00";
        Integer price = Integer.valueOf(request.getParameter("price"));
        Integer seatNumber = Integer.valueOf(request.getParameter("seatNumber"));
        
        // 从数据库中取出该车次信息，进行修改
        TrainService trainService = new TrainServiceImpl();
        Train train = trainService.getById(trainId);
        
        train.setTrainNumber(trainNumber);
        train.setStartStation(startStation);
        train.setEndStation(endStation);
        train.setStartTime(startTime);
        train.setEndTime(endTime);
        train.setPrice(price);
        train.setSeatNumber(seatNumber);
        
        // 将数据存入数据库，并返回是否成功的结果
        int recordNumber = trainService.update(train);
        
        
        // 根据返回值判断是否添加车次成功，返回1为成功
        PrintWriter out = response.getWriter();
        if(recordNumber == 1) {
            // 如果成功，弹出提示并跳转到所有车次的Servlet
            out.write("<script>alert('修改成功！');"
                    + "window.location.href='GetAllTrainServlet'</script>");
        } else {
            // 如果失败，弹出提示并跳转到所有车次的Servlet
            out.write("<script>alert('很抱歉,修改失败！');"
                    + "window.location.href='GetAllTrainServlet'</script>");
        }
        
        // 关闭PrintWriter对象
        out.close();
    }

}