package cn.com.qmth.examcloud.core.questions.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import cn.com.qmth.examcloud.core.questions.dao.entity.dto.CoursePropertyDto;
import cn.com.qmth.examcloud.core.questions.dao.entity.CourseProperty;

/**
 * @author weiwenhai
 * @describle 课程属性 coursePropertyService
 * @date 2017.11.2
 */
public interface CoursePropertyService {

    /**
     * 查询所有课程属性
     *
     * @param orgId
     * @return
     */
    public List<CourseProperty> findAllByOrgId(Long orgId);

    /**
     * 查询所有课程属性带分页
     *
     * @param coursePropertyDto
     * @param pageable
     * @return
     */
    public Page<CourseProperty> findAllByOrg(CoursePropertyDto coursePropertyDto, Pageable pageable);

    /**
     * 保存课程属性
     *
     * @param coursePropertyDto
     */
    public void saveCourseProperty(CoursePropertyDto coursePropertyDto) throws Exception;

    /**
     * 启用
     *
     * @param id
     * @param orgId
     */
    public void openCourseProperty(Long id);

    /**
     * 禁用
     *
     * @param id
     * @param orgId
     */
    public void closeCourseProperty(Long id);

    /**
     * 根据课程id查询所有课程属性
     *
     * @param courseId
     * @return
     */
    public List<CourseProperty> findAllByCourseId(Long courseId);

    /**
     * 根据课程code查询所有课程属性
     *
     * @param courseId
     * @return
     */
    public List<CourseProperty> findAllByCourseCode(String code);

    /**
     * 根据课程code查询所有开启的课程属性
     *
     * @param code
     * @param enable
     * @return
     */
    public List<CourseProperty> findAllEnable(String code, Boolean enable);

    /**
     * 批量启用
     *
     * @param idList
     * @param orgId
     */
    public void opensCourseProperty(List<String> idList);

    /**
     * 批量禁用
     *
     * @param idList
     * @param orgId
     */
    public void closesCourseProperty(List<String> idList);
}
