package com.itheima.controller;

import com.itheima.po.PageInfo;
import com.itheima.po.StudentClean;
import com.itheima.service.StudentCleanService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @program: dormitorySystem
 * @description: 学生卫生控制器
 * @author: Joyrocky
 * @create: 2019-04-25 12:13
 **/
@Controller  // 标记该类为Spring MVC的控制器类
public class StudentCleanController {

    // 依赖注入StudentCleanService服务类，用于业务逻辑处理
    @Autowired
    private StudentCleanService studentCleanService;

    /**
     * 分页查询
     * pageIndex 当前页码
     * pageSize  显示条数
     */
    @RequestMapping(value = "/findStudentClean")  // 映射到"/findStudentClean"路径，处理GET请求
    public String findDormClean(Integer s_studentid, String s_name, Integer s_dormitoryid, Integer pageIndex, Integer pageSize, Model model) {
        // 调用service层的方法，获取分页信息（包括学生ID、姓名、宿舍ID等查询条件）
        PageInfo<StudentClean> di = studentCleanService.findPageInfo(s_studentid, s_name, s_dormitoryid, pageIndex, pageSize);
        
        // 将查询结果添加到模型中，供视图层展示
        model.addAttribute("di", di);
        
        // 返回视图名称，指向"studentclean_list"页面展示列表数据
        return "studentclean_list";
    }

    /**
     * 导出Excel
     */
    @RequestMapping(value = "/exportstudentcleanlist", method = RequestMethod.POST)  // 映射到"/exportstudentcleanlist"路径，处理POST请求
    @ResponseBody  // 返回响应体，响应数据会自动转换为JSON格式
    public List<StudentClean> exportStudentclean() {
        // 调用service层获取所有学生卫生信息列表
        List<StudentClean> studentCleanList = studentCleanService.getAll();
        
        // 返回所有学生卫生信息数据
        return studentCleanList;
    }

    /**
     * 添加宿舍卫生信息
     */
    @RequestMapping(value = "/addStudentClean", method = RequestMethod.POST)  // 映射到"/addStudentClean"路径，处理POST请求
    @ResponseBody  // 返回响应体
    public String addDormClean(@RequestBody StudentClean studentclean) {  // 使用@RequestBody注解将请求体中的JSON数据绑定为StudentClean对象
        // 调用service层的添加方法，将新的卫生记录添加到数据库
        int d = studentCleanService.addStudentClean(studentclean);
        
        // 返回结果页面名称，表示添加成功后跳转到"studentclean_list"页面
        return "studentclean_list";
    }

    /**
     * 删除宿舍卫生信息
     */
    @RequestMapping("/deleteStudentClean")  // 映射到"/deleteStudentClean"路径，处理请求
    @ResponseBody  // 返回响应体
    public String deleteDormClean(Integer g_id) {  // 接收要删除的卫生记录ID（g_id）
        // 调用service层的删除方法，根据ID删除对应的学生卫生记录
        int d = studentCleanService.deleteStudentClean(g_id);
        
        // 返回结果页面名称，表示删除成功后跳转到"studentclean_list"页面
        return "studentclean_list";
    }

    /**
     * 修改宿舍卫生信息
     */
    @RequestMapping("/updateStudentClean")  // 映射到"/updateStudentClean"路径，处理请求
    public String updateDormClean(StudentClean studentclean) {  // 接收修改后的卫生记录对象
        // 调用service层的更新方法，更新学生卫生信息
        int d = studentCleanService.updateStudentClean(studentclean);
        
        // 更新成功后重定向到"findStudentClean"页面，显示最新的卫生信息列表
        return "redirect:/findStudentClean";
    }

    /**
     * 根据ID查找单个宿舍卫生记录
     */
    @RequestMapping("/findStudentCleanById")  // 映射到"/findStudentCleanById"路径，处理请求
    public String findDormCleanById(Integer g_id, HttpSession session) {  // 接收要查询的卫生记录ID（g_id）
        // 调用service层的查询方法，根据ID获取单个学生卫生记录
        StudentClean d = studentCleanService.findStudentCleanById(g_id);
        
        // 将查询到的学生卫生记录存入session，方便在后续页面使用
        session.setAttribute("d", d);
        
        // 返回到"studentclean_edit"页面，允许用户编辑该卫生记录
        return "studentclean_edit";
    }
}
