package jnpf.cultivate.v2.controller.web.course;

import jnpf.base.ActionResult;
import jnpf.base.vo.PageListVO;
import jnpf.cultivate.v2.service.V2CultivateCourseService;
import jnpf.model.cultivate.CultivatePage;
import jnpf.model.cultivate.po.course.FtbCultivateCourse;
import jnpf.model.cultivate.v2.course.web.req.V2CultivateCourseListReq;
import jnpf.model.cultivate.v2.course.web.req.V2CultivateCourseReq;
import jnpf.model.cultivate.v2.course.web.req.V2CultivateCourseSelectReq;
import jnpf.model.cultivate.v2.course.web.vo.V2CultivateCourseDetailsVo;
import jnpf.model.cultivate.v2.course.web.vo.V2CultivateCoursePageVo;
import jnpf.model.cultivate.v2.course.web.vo.V2CultivateCourseSelectVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * web课程模块
 */
@RestController
@RequestMapping("/v2/web/course")
public class V2CultivateCourseWebController {
    @Autowired
    private V2CultivateCourseService v2CultivateCourseService;

    /**
     * 课程列表分页查询
     *
     * @param req 条件参数
     * @return {@link ActionResult}
     */
    @GetMapping("/query-list")
    public ActionResult<PageListVO<V2CultivateCoursePageVo>> list(V2CultivateCourseListReq req) {
        return ActionResult.success(CultivatePage.coverPageList(v2CultivateCourseService.webList(req)));
    }


    /**
     * 添加课程
     *
     * @param req 课程参数
     * @return String
     */
    @PostMapping("/add")
    public ActionResult<String> add(@Validated @RequestBody V2CultivateCourseReq req) {
        return ActionResult.success("成功", v2CultivateCourseService.add(req));
    }

    /**
     * 修改课程信息
     *
     * @param req 课程参数
     * @return {@link ActionResult}
     */
    @PutMapping("/update")
    public ActionResult<Void> update(@Validated @RequestBody V2CultivateCourseReq req) {
        v2CultivateCourseService.update(req);
        //处理是否重新学习
        v2CultivateCourseService.clearCourseLog(req.getId());
        return ActionResult.success();
    }


    /**
     * 删除课程
     *
     * @param id 课程主键id，必传
     * @return {@link ActionResult}
     */
    @DeleteMapping("/{id}")
    public ActionResult<Void> delete(@PathVariable("id") String id) {
        v2CultivateCourseService.delete(id);
        return ActionResult.success();
    }


    /**
     * 课程详情(根据课程id查询课程详情)
     *
     * @param id 课程主键id
     * @return {@link ActionResult}<{@link FtbCultivateCourse}>
     */
    @GetMapping("/details/{id}")
    public ActionResult<V2CultivateCourseDetailsVo> detail(@PathVariable("id") String id) {
        return ActionResult.success(v2CultivateCourseService.detail(id));
    }


    /**
     * 添加岗位学习OR任务时，课程列表选择
     *
     * @param req 分页请求对象
     * @return {@link ActionResult}
     */
    @GetMapping("/learn-select-course-list")
    public ActionResult<PageListVO<V2CultivateCourseSelectVo>> learnSelectCourseList(V2CultivateCourseSelectReq req) {
        return ActionResult.success(CultivatePage.coverPageList(v2CultivateCourseService.learnSelectCourseList(req)));
    }
}
