package com.jwipc.supplier.controller.pc;

import com.jwipc.page.PageView;
import com.jwipc.supplier.dto.SupplierTemplateQuestionnaireBaseDTO;
import com.jwipc.supplier.dto.SupplierTemplateQuestionnaireSaveDTO;
import com.jwipc.supplier.logic.QuestionnaireLogic;
import com.jwipc.supplier.model.query.QuestionnaireQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static com.jwipc.supplier.constant.ModuleConst.MODULE_ROOT;

/**
 * 问卷调查接口
 */
@RequestMapping(MODULE_ROOT + "/questionnaire/rest")
@RequiredArgsConstructor
@RestController
public class QuestionnaireRestController {
    private final QuestionnaireLogic questionnaireLogic;

    /**
     * 问卷调查配置项 分页列表
     *
     * @param query 查询参数
     * @return
     */
    @GetMapping("list")
    public PageView list(QuestionnaireQuery query) {
        PageView pageView = questionnaireLogic.getList(query);
        return pageView;
    }

    /**
     * 问卷调查配置项中的 答案选项列表
     *
     * @param questionnaireId 文件调查配置id
     * @return
     */
    @GetMapping("item/list")
    public PageView itemList(Long questionnaireId) {
        PageView pageView = questionnaireLogic.getItemList(questionnaireId);
        return pageView;
    }

    /**
     * 问卷调查配置项新增和修改保存接口
     *
     * @param questionnaireSaveDTO 保存对象
     * @return
     */
    @PostMapping("saveOrUpdate")
    public ResponseEntity saveOrUpdate(@RequestBody SupplierTemplateQuestionnaireSaveDTO questionnaireSaveDTO) {
        questionnaireLogic.saveOrUpdate(questionnaireSaveDTO);
        return ResponseEntity.ok().build();
    }

    /**
     * 问卷调查配置项删除
     *
     * @param id 问卷调查配置项主键
     * @return
     */
    @PostMapping("remove")
    public ResponseEntity remove(Long id) {
        questionnaireLogic.remove(id);
        return ResponseEntity.ok().build();
    }

    /**
     * 更新问卷配置项状态 如果是启用就变成禁用，如果是禁用就变成启用
     *
     * @param id 问卷调查配置项主键
     * @return
     */
    @PostMapping("updateStatus")
    public ResponseEntity updateStatus(Long id) {
        questionnaireLogic.updateStatus(id);
        return ResponseEntity.ok().build();
    }

    /**
     * 获取供应商模板的问卷调查项
     *
     * @param templateId 供应商模板主键
     * @return
     */
    @GetMapping("listByTemplateId")
    public ResponseEntity getListByTemplateId(Long templateId) {
        List<SupplierTemplateQuestionnaireBaseDTO> questionnaireBaseDTOS = questionnaireLogic.getListByTemplateId(
                templateId);
        return ResponseEntity.ok(questionnaireBaseDTOS);
    }
}
