package com.schoolinout.system.service;

import com.schoolinout.system.domain.TeacherClassRelation;
import com.schoolinout.system.domain.dto.AddTeacherClassRelationDto;
import com.schoolinout.system.domain.dto.BindClassTeacherMain;
import com.schoolinout.system.domain.dto.RelationListDto;
import com.schoolinout.system.domain.vo.TeacherClassInfoVo;

import java.util.List;

/**
 * 老师-班级关系Service接口
 *
 * @author sakura
 * @date 2024-01-04
 */
public interface ITeacherClassRelationService {
    /**
     * 查询老师-班级关系
     *
     * @param id 老师-班级关系主键
     * @return 老师-班级关系
     */
    public TeacherClassRelation selectTeacherClassRelationById(Long id);

    /**
     * 查询老师-班级关系列表
     *
     * @param teacherClassRelation 老师-班级关系
     * @return 老师-班级关系集合
     */
    public List<TeacherClassRelation> selectTeacherClassRelationList(TeacherClassRelation teacherClassRelation);

    /**
     * 新增老师-班级关系
     *
     * @param teacherClassRelation 老师-班级关系
     * @return 结果
     */
    public int insertTeacherClassRelation(TeacherClassRelation teacherClassRelation);

    /**
     * 修改老师-班级关系
     *
     * @param teacherClassRelation 老师-班级关系
     * @return 结果
     */
    public int updateTeacherClassRelation(TeacherClassRelation teacherClassRelation);

    /**
     * 批量删除老师-班级关系
     *
     * @param ids 需要删除的老师-班级关系主键集合
     * @return 结果
     */
    public int deleteTeacherClassRelationByIds(Long[] ids);

    /**
     * 删除老师-班级关系信息
     *
     * @param id 老师-班级关系主键
     * @return 结果
     */
    public int deleteTeacherClassRelationById(Long id);

    /**
     * 以教师为主，绑定多个班级
     *
     * @param form 表单对象
     * @return 结果
     */
    public int bindTeacherClass(AddTeacherClassRelationDto form);

    /**
     * 查询当前教师绑定的所有班级
     *
     * @return 结果
     */
    public List<TeacherClassInfoVo> queryTeacherBindClassList(RelationListDto form);

    /**
     * 绑定班级的班主任
     *
     * @param form 表单
     * @return 结果
     */
    public String bindClassTeacherMain(BindClassTeacherMain form);

    /**
     * 搜索教师绑定的班级列表
     *
     * @param teacherId 教师id
     * @return 返回绑定的班级id
     */
    public List<Long> listTeacherBindClass(Long teacherId);
}
