package cn.iocoder.yudao.module.base.service;

import cn.iocoder.yudao.module.base.entity.RepairWorker;
import cn.iocoder.yudao.module.base.vo.RepairWorkerPageReqVO;
import cn.iocoder.yudao.module.base.vo.RepairWorkerRespVO;
import cn.iocoder.yudao.module.base.vo.RepairWorkerSaveReqVO;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.validation.Valid;
import java.util.List;

/**
 * 维修工人 Service 接口
 *
 * @author pqz
 */
public interface RepairWorkerService extends IService<RepairWorker> {


    /**
     * 批量创建维修工人
     * @author PQZ
     * @date 18:33 2024/10/9
     * @param userList 选中用户集合
    **/
    void saveWorkers(List<UserDTO> userList);

    /**
     * 更新维修工人
     *
     * @param updateReqVO 更新信息
     */
    void updateWorker(@Valid RepairWorkerSaveReqVO updateReqVO);

    /**
     * 删除维修工人
     *
     * @param id 编号
     */
    void deleteWorker(String id);

    /**
     * 获得维修工人
     *
     * @param id 编号
     * @return 维修工人
     */
    RepairWorker getWorker(String id);


    /**
     * @param pageReqVO RepairWorkerPageReqVO实体
     * @param page      分页参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.base.vo.RepairWorkerRespVO>
     * @author PQZ
     * @date 14:12 2024/10/9
     **/
    IPage<RepairWorkerRespVO> queryListPage(RepairWorkerPageReqVO pageReqVO, Page<RepairWorkerRespVO> page);

    /**
     * 通过工单ID查到工单ID中所选择的员工信息
     *
     * @author 小李
     * @date 15:53 2024/10/14
     * @param ticketId 工单ID
     **/
    List<RepairWorker> listByTicketId(String ticketId);

    /**
     * 向指定用户发送消息
     * @author PQZ
     * @date 16:27 2024/10/18
     * @param userId 用户id
     * @param text   消息通知内容
    **/
    void sentMessage(Long userId,String text);

    /**
     * 通过班组长的id查该班组的员工
     *
     * @author 小李
     * @date 16:55 2024/10/14
     **/
    List<RepairWorker> listByLeads();

    /**
     * 查当前登录用户是否维修班组长
     * @author vinjor-M
     * @date 18:17 2024/10/16
     * @return boolean
    **/
    boolean getIfLeader();
}
