package jnpf.cultivate.controller.web.course;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jnpf.base.ActionResult;
import jnpf.base.vo.PageListVO;
import jnpf.cultivate.service.FtbCultivateCourseTypeService;
import jnpf.model.cultivate.CultivatePage;
import jnpf.model.cultivate.dto.course.FtbCultivateCourseTypeDTO;
import jnpf.model.cultivate.dto.course.FtbCultivateCourseTypeUpdateDTO;
import jnpf.model.cultivate.po.course.FtbCultivateCourse;
import jnpf.model.cultivate.vo.course.web.FtbCultivateCourseTypeVO;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
* web课程类型模块
*
* @author wcx
*/
@RestController
@RequestMapping("/web/ftb-cultivate-course-type")
public class FtbCultivateCourseTypeController {
    @Resource
    private FtbCultivateCourseTypeService ftbCultivateCourseTypeService;

    /**
     * 添加课程类型
     *
     * @param ftbCultivateCourseDTO 课程类型参数
     * @return {@link ActionResult}<{@link FtbCultivateCourse}>
     */
    @PostMapping("/add")
    public ActionResult add(@Validated @RequestBody FtbCultivateCourseTypeDTO ftbCultivateCourseDTO) {
        ftbCultivateCourseTypeService.add(ftbCultivateCourseDTO);
        return ActionResult.success();
    }

    /**
     * 删除课程类型
     *
     * @param id 课程主键id
     * @return {@link ActionResult}
     */
    @DeleteMapping("/{id}")
    public ActionResult delete(@PathVariable("id") String id) {
        return ftbCultivateCourseTypeService.delete(id);
    }

    /**
     * 更新课程信息类型
     *
     * @param ftbCultivateCourseTypeDTO 课程章节参数
     * @return {@link ActionResult}
     */
    @PutMapping("/update")
    public ActionResult update(@Validated @RequestBody FtbCultivateCourseTypeUpdateDTO ftbCultivateCourseTypeDTO) {
        ftbCultivateCourseTypeService.updateInfo(ftbCultivateCourseTypeDTO);
        return ActionResult.success();
    }

    /**
     * 课程类型分页列表
     *
     * @param cultivatePage 分页参数
     * @return {@link ActionResult}<{@link Page}<{@link FtbCultivateCourseTypeVO}>>
     */
    @GetMapping("/list")
    public ActionResult<PageListVO<FtbCultivateCourseTypeVO>> list(CultivatePage cultivatePage) {
        Page<FtbCultivateCourseTypeVO> page = cultivatePage.coverCultivatePage();
        page = ftbCultivateCourseTypeService.pageList(page);
        return ActionResult.success(CultivatePage.coverPageList(page));
    }

    /**
     * 获取所有课程类型
     *
     * @return {@link ActionResult}<{@link List}<{@link FtbCultivateCourseTypeVO}>>
     */
    @GetMapping("/get-all")
    public ActionResult<List<FtbCultivateCourseTypeVO>> getAll() {
        List<FtbCultivateCourseTypeVO> list = ftbCultivateCourseTypeService.getAll();
        return ActionResult.success(list);
    }

}
