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

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;

import cn.com.qmth.examcloud.api.commons.security.bean.User;
import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
import cn.com.qmth.examcloud.core.questions.dao.entity.CourseProperty;
import cn.com.qmth.examcloud.core.questions.dao.entity.dto.CoursePropertyDto;
import cn.com.qmth.examcloud.core.questions.service.bean.CoursePropertyImportInfo;
import cn.com.qmth.examcloud.core.questions.service.bean.paper.PaperAnswerDomain;

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

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

    /**
     * 查询所有课程属性带分页
     */
    Page<CourseProperty> findList(CoursePropertyDto dto, Pageable pageable, UserDataRule userDataRule);

    /**
     * 保存课程属性
     */
    void saveCourseProperty(CoursePropertyDto dto);

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

    /**
     * 根据课程code查询所有课程属性
     */
    List<CourseProperty> findAllByCourseCode(String courseCode);

    /**
     * 根据课程code查询所有开启的课程属性
     */
    List<CourseProperty> findByEnable(String courseCode, Boolean enable,User user,UserDataRule ud);

    /**
     * 批量启用/批量禁用
     */
    void updateCoursePropertyStatus(List<String> coursePropertyIds, Boolean enable);

    /**
     * 启用/禁用
     */
    void updateCoursePropertyStatus(String coursePropertyId, Boolean enable);

	List<Map<String, Object>> importCourseProperty(UserDataRule ud, User user, Long rootOrgId, MultipartFile dataFile);

	List<CoursePropertyImportInfo> exportCourseProperty(UserDataRule ud, User user, String name, Long courseId);

}