package com.itheima.controller;

import com.itheima.po.DormRepair;
import com.itheima.po.PageInfo;
import com.itheima.service.DormRepairService;
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-27 17:13
 **/
@Controller  // 标记这是一个控制器类
public class DormRepairController {

    // 依赖注入，注入DormRepairService服务类，用于业务层操作
    @Autowired
    private DormRepairService dormRepairService;

    /**
     * 分页查询
     * pageIndex 当前页码
     * pageSize  显示条数
     */
    @RequestMapping(value = "/findDormRepair")  // 通过请求映射到该方法，处理查询请求
    public String findDormRepair(Integer d_id, String d_dormbuilding, Integer pageIndex, Integer pageSize, Model model) {
        // 调用service层的方法，获取分页信息
        PageInfo<DormRepair> di = dormRepairService.findPageInfo(d_id, d_dormbuilding, pageIndex, pageSize);
        // 将查询结果添加到模型中，用于页面展示
        model.addAttribute("di", di);
        return "dormrepair_list";  // 返回视图名称
    }

    /**
     * 导出Excel
     */
    @RequestMapping(value = "/exportdormrepairlist", method = RequestMethod.POST)  // 映射POST请求，处理导出操作
    @ResponseBody  // 返回响应体，数据将以JSON格式返回
    public List<DormRepair> exportDormrepair() {
        // 调用service层获取所有的维修记录
        List<DormRepair> dormRepairList = dormRepairService.getAll();
        return dormRepairList;  // 返回维修记录列表
    }

    /**
     * 添加宿舍维修记录
     */
    @RequestMapping(value = "/addDormRepair", method = RequestMethod.POST)  // 映射POST请求，处理添加维修记录的操作
    @ResponseBody  // 返回响应体
    public String addDormitory(@RequestBody DormRepair dormrepair) {  // 使用@RequestBody注解接收请求体中的JSON数据并转换为对象
        // 调用service层的添加方法，返回结果（可能是影响的行数）
        int d = dormRepairService.addDormRepair(dormrepair);
        return "dormrepair_list";  // 返回视图名称，表示添加成功后返回到维修记录列表页面
    }

    /**
     * 删除宿舍维修记录
     */
    @RequestMapping("/deleteDormRepair")  // 映射删除请求
    @ResponseBody  // 返回响应体
    public String deleteDormRepair(Integer r_id) {  // 接收要删除的维修记录的ID
        // 调用service层的删除方法
        int d = dormRepairService.deleteDormRepair(r_id);
        return "dormrepair_list";  // 删除成功后返回到维修记录列表页面
    }

    /**
     * 修改宿舍维修记录
     */
    @RequestMapping("/updateDormRepair")  // 映射更新请求
    public String updateDormRepair(DormRepair dormrepair) {  // 接收要更新的维修记录对象
        // 调用service层的更新方法
        int d = dormRepairService.updateDormRepair(dormrepair);
        return "redirect:/findDormRepair";  // 更新成功后重定向到维修记录查询页面
    }

    /**
     * 根据ID查找单个维修记录
     */
    @RequestMapping("/findDormRepairById")  // 映射查找请求
    public String findDormRepairById(Integer r_id, HttpSession session) {  // 接收维修记录的ID
        // 调用service层的查询方法，获取维修记录
        DormRepair d = dormRepairService.findDormRepairById(r_id);
        // 将查询到的维修记录存入session，方便在编辑页面使用
        session.setAttribute("d", d);
        return "dormrepair_edit";  // 跳转到编辑页面，允许用户修改维修记录
    }
}
