package com.ym.mec.biz.service;

import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
import com.ym.mec.biz.dal.dto.SimpleUserDto;
import com.ym.mec.biz.dal.entity.Employee;
import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.service.BaseService;

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

public interface EmployeeService extends BaseService<Integer, Employee> {

    /**
     * @Author: Joburgess
     * @Date: 2019/9/17
     * 根据部门获取下面的员工
     */
    PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) throws Exception;

    /**
     * @Author: Joburgess
     * @Date: 2019/9/17
     * 员工操作
     */
    void employeeOperate(Integer employeeId, EmployeeOperateEnum operate);

    /**
     * 新增员工
     * @param employee
     */
    void add(Employee employee) throws Exception;

    /**
     * 修改员工信息
     * @param employee
     */
    void updateEmployee(Employee employee);

    /**
     * @Author: Joburgess
     * @Date: 2019/9/24
     * 删除员工
     */
    void deleteEmployee(Long userId);

    /**
     * @describe 根据角色和部门获取用户
     * @author Joburgess
     * @date 2020/3/12
     * @param roleIds: 角色编号列表
     * @param organIds: 用户编号列表
     * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
     */
    List<SimpleUserDto> findByRole(String roleIds,String organIds);

    /**
     * 是否有课程组关联的教务老师
     * @param employeeId
     * @return
     */
    HashMap<String, Integer> hasCourseGroupRelation(Integer employeeId);

    /**
     * 修改指定老师所有教务老师关联
     * @param currentUserId
     * @param targetUserId
     */
    void updateEducationTeacherId(Integer currentUserId, Integer targetUserId);

    /**
     * 获取员工离职时对应角色所在分部
     * @param userId
     * @return
     */
    Map<String,Object> levelDetail(Integer userId);

    /**
     * 员工离职交接
     * @param employeeLevelDtos
     */
    void level(List<EmployeeLevelDto> employeeLevelDtos);

    /**
     * @describe 根据角色和部门获取用户（包含冻结和离职的）
     * @author Joburgess
     * @date 2020/3/12
     * @param roleIds: 角色编号列表
     * @param organIds: 用户编号列表
     * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
     */
    List<SimpleUserDto> findAllByRole(String roleIds,String organIds);
}
