package cn.iocoder.byzs.module.web.controller.admin.questionnaire;

import cn.iocoder.byzs.framework.common.pojo.CommonResult;
import cn.iocoder.byzs.framework.common.pojo.PageResult;
import cn.iocoder.byzs.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.byzs.module.bjdx.controller.admin.questionnaire.vo.QuestionnairePageReqVO;
import cn.iocoder.byzs.module.bjdx.dal.dataobject.questionnaire.QuestionnaireDO;
import cn.iocoder.byzs.module.bjdx.service.questionnaire.QuestionnaireService;
import cn.iocoder.byzs.module.web.controller.admin.questionnaire.vo.WebQuestionnaireResultVo;
import cn.iocoder.byzs.module.web.controller.admin.questionnaire.vo.WebQuestionnaireShowVo;
import cn.iocoder.byzs.module.web.controller.admin.questionnaire.vo.WebQuestionnaireVo;
import cn.iocoder.byzs.module.web.service.questionnaire.WebQuestionnaireServiceImpl;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.annotation.security.PermitAll;
import jakarta.validation.Valid;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import static cn.iocoder.byzs.framework.common.pojo.CommonResult.success;
import static cn.iocoder.byzs.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;


@Tag(name = "Web-前端接口")
@RestController
@RequestMapping("/bjdxWeb/questionnaire")
@Validated
public class WebQuestionnaireController {

    @Resource
    private WebQuestionnaireServiceImpl webQuestionnaireService;
    @Resource
    private QuestionnaireService questionnaireService;

    @GetMapping("/selectQuestionnaire")
    @Operation(summary = "取问卷列表")
    public CommonResult<PageResult<QuestionnaireDO>> selectQuestionnaire(@Valid QuestionnairePageReqVO questionnairePageReqVO) {
        PageResult<QuestionnaireDO> pageResult = questionnaireService.getQuestionnairePage(questionnairePageReqVO);
        return success(pageResult);
    }

    @GetMapping("/getQuestionVoList")
    @Operation(summary = "取问题列表")
    public CommonResult<WebQuestionnaireShowVo> getQuestionVoList(@RequestParam("qrId") Long qrId) {
        WebQuestionnaireShowVo webQuestionnaireShowVo = webQuestionnaireService.getQuestionVoList(qrId, getLoginUserId());
        return success(webQuestionnaireShowVo);
    }

    @PermitAll
    @TenantIgnore
    @PostMapping("/saveQuestionResult")
    @Operation(summary = "保存试卷结果")
    public CommonResult<Boolean> saveQuestionResult(@Valid @RequestBody WebQuestionnaireResultVo questionnaireResultVo) {
        questionnaireResultVo.setUserId(getLoginUserId());
        return success(webQuestionnaireService.saveQuestionResult(questionnaireResultVo));
    }

}
