package com.ssj.service.weixin.library.service;

import com.ssj.bean.weixin.libmy.domain.TbLibManagerAudit;
import com.ssj.framework.core.common.service.BaseService;
import com.ssj.service.weixin.library.dto.TeacherInfoDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

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

/**
 * @author Mount Liu
 * @date 2019/2/28
 */
public interface LibManagerAuditService extends BaseService<TbLibManagerAudit, String> {
    /**
     * 分页查询
     *
     * @param params
     * @param initPage
     * @return
     */
    Page<TbLibManagerAudit> findByPage(Map<String, Object> params, Pageable initPage);

    /**
     * 查找审批记录
     *
     * @param libManagerId
     * @return
     */
    List<TbLibManagerAudit> findByLibManagerId(String libManagerId);

    /**
     * 查询最新的一条审批记录
     * @param userId
     * @param type
     * @return
     */
    TbLibManagerAudit findByUserIdAndType(String userId, int type);

    /**
     * 查询批改相关老师（批改老师、匹配知识点老师）的最新的一条审批中记录
     * @param userId
     * @return
     */
    TbLibManagerAudit findCorrectAuditByUserId(String userId);

    TbLibManagerAudit findNewestOneByUserIdAndType(String userId, int type);

    /**
     * 查询申请资料
     */
    TeacherInfoDTO findMyInfo(String teacherId);

    TbLibManagerAudit findByUserIdAndTypeAndStatus(String teacherId, int type, int status);

    /**
     * 根据管理员id查询最新的一条申请记录
     */
    TbLibManagerAudit findNewestOneByLibManagerId(String libManagerId);

    /**
     * 分页查询审核记录
     * @param pageNo 页码
     * @param pageSize 每页记录数
     * @param type 审核记录的类型
     * @param name
     * @return
     */
    com.ssj.framework.basic.common.bean.Page findPageByTypeAndName(int pageNo, int pageSize, int type, String name);

    /**
     * 清除注册审核记录
     */
    void deleteByUserId(String userId);

    /**
     * 查询未审核数量
     */
    int countUnOperateNum();

    /**
     * 查找所有的注册老师
     */
    List<TbLibManagerAudit> findAllByTypeAndStatus(int type,int status);

    /**
     * 查询对应审批记录
     *
     * @param libManagerId
     * @param status
     * @return
     */
    List<TbLibManagerAudit> findByLibManagerIdAndStatus(String libManagerId,int status);
}
