package com.jeesite.modules.admin.wenjuan.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jeesite.modules.admin.wenjuan.dao.AdminQuestionItemDao;
import com.jeesite.modules.admin.wenjuan.entity.AdminQuestionItem;
import com.jeesite.modules.admin.wenjuan.entity.AdminQuestionnaireSurvey;
import com.jeesite.modules.admin.wenjuan.service.AdminQuestionnaireSurveyService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.jeesite.common.config.Global;
import com.jeesite.common.entity.Page;
import com.alibaba.fastjson.JSONValidator;
import com.jeesite.common.codec.EncodeUtils;
import com.jeesite.common.web.BaseController;

/**
 * 问卷调查表Controller
 *
 * @author wlc
 * @version 2022-06-18
 */
@Controller
@RequestMapping(value = "${adminPath}/admin/adminQuestionnaireSurvey")
public class AdminQuestionnaireSurveyController extends BaseController {

    @Autowired
    private AdminQuestionnaireSurveyService adminQuestionnaireSurveyService;

    @Autowired
    private AdminQuestionItemDao adminQuestionItemDao;

    /**
     * 获取数据
     */
    @ModelAttribute
    public AdminQuestionnaireSurvey get(Long id, boolean isNewRecord) {
        return adminQuestionnaireSurveyService.get(id + "", isNewRecord);
    }

    /**
     * 查询列表
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:view")
    @RequestMapping(value = {"list", ""})
    public String list(AdminQuestionnaireSurvey adminQuestionnaireSurvey, Model model) {
        model.addAttribute("adminQuestionnaireSurvey", adminQuestionnaireSurvey);
        return "modules/admin/wenjuan/adminQuestionnaireSurveyList";
    }

    /**
     * 查询列表数据
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:view")
    @RequestMapping(value = "listData")
    @ResponseBody
    public Page<AdminQuestionnaireSurvey> listData(AdminQuestionnaireSurvey adminQuestionnaireSurvey, HttpServletRequest request, HttpServletResponse response) {
        adminQuestionnaireSurvey.setPage(new Page<>(request, response));
        Page<AdminQuestionnaireSurvey> page = adminQuestionnaireSurveyService.findPage(adminQuestionnaireSurvey);
        return page;
    }

    /**
     * 查询子表数据
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:view")
    @RequestMapping(value = "adminQuestionItemListData")
    @ResponseBody
    public Page<AdminQuestionItem> subListData(AdminQuestionItem adminQuestionItem, HttpServletRequest request, HttpServletResponse response) {
        adminQuestionItem.setPage(new Page<>(request, response));
        Page<AdminQuestionItem> page = adminQuestionnaireSurveyService.findSubPage(adminQuestionItem);
        return page;
    }

    /**
     * 查看编辑表单
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:view")
    @RequestMapping(value = "form")
    public String form(AdminQuestionnaireSurvey adminQuestionnaireSurvey, Model model) {
        model.addAttribute("adminQuestionnaireSurvey", adminQuestionnaireSurvey);
        return "modules/admin/wenjuan/adminQuestionnaireSurveyForm";
    }

    /**
     * 保存数据
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:edit")
    @PostMapping(value = "save")
    @ResponseBody
    public String save(@Validated AdminQuestionnaireSurvey adminQuestionnaireSurvey) {
        adminQuestionnaireSurveyService.save(adminQuestionnaireSurvey);
        return renderResult(Global.TRUE, text("保存问卷调查成功！"));
    }

    /**
     * 保存数据
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:edit")
    @PostMapping(value = "update")
    @ResponseBody
    public String update(@Validated AdminQuestionnaireSurvey adminQuestionnaireSurvey) {
        adminQuestionnaireSurveyService.save(adminQuestionnaireSurvey);
        return renderResult(Global.TRUE, text("修改问卷调查成功！"));
    }

    /**
     * 删除数据
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:edit")
    @RequestMapping(value = "delete")
    @ResponseBody
    public String delete(AdminQuestionnaireSurvey adminQuestionnaireSurvey) {
        adminQuestionnaireSurveyService.delete(adminQuestionnaireSurvey);
        return renderResult(Global.TRUE, text("删除问卷调查成功！"));
    }

    /**
     * 列表选择对话框
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:view")
    @RequestMapping(value = "adminQuestionnaireSurveySelect")
    public String adminQuestionnaireSurveySelect(AdminQuestionnaireSurvey adminQuestionnaireSurvey, String selectData, Model model) {
        String selectDataJson = EncodeUtils.decodeUrl(selectData);
        if (selectDataJson != null && JSONValidator.from(selectDataJson).validate()) {
            model.addAttribute("selectData", selectDataJson);
        }
        model.addAttribute("adminQuestionnaireSurvey", adminQuestionnaireSurvey);
        return "modules/admin/wenjuan/adminQuestionnaireSurveySelect";
    }

    /**
     * 删除问卷调查项数据
     */
    /*@RequiresPermissions("admin:adminQuestionnaireSurvey:edit")*/
    @RequestMapping(value = "deleteItem")
    @ResponseBody
    public String deleteItem(AdminQuestionItem AdminQuestionItem) {
        adminQuestionItemDao.delete(AdminQuestionItem);
        return renderResult(Global.TRUE, text("删除问卷调查项成功！"));
    }

    /**
     * 修改问卷调查数据项
     */
    @RequiresPermissions("admin:adminQuestionnaireSurvey:edit")
    @PostMapping(value = "updateQuestion")
    @ResponseBody
    public String updateQuestion(@Validated AdminQuestionnaireSurvey adminQuestionnaireSurvey) {
        adminQuestionnaireSurveyService.update(adminQuestionnaireSurvey);
        return renderResult(Global.TRUE, text("保存问卷调查成功！"));
    }



}