package cn.iocoder.yudao.module.relations.service.entry;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.relations.api.entry.dto.RelationsEntryCreateReqDTO;
import cn.iocoder.yudao.module.relations.controller.admin.entry.vo.RelationsEntryPageReqVO;
import cn.iocoder.yudao.module.relations.controller.admin.entry.vo.RelationsEntryRespVO;
import cn.iocoder.yudao.module.relations.controller.admin.entry.vo.RelationsEntrySaveReqVO;
import cn.iocoder.yudao.module.relations.dal.dataobject.entry.RelationsEntryDO;

import javax.validation.Valid;

/**
 * 入职信息 Service 接口
 *
 * @author zhaopq
 */
public interface RelationsEntryService {

    /**
     * 创建入职信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createEntry(@Valid RelationsEntrySaveReqVO createReqVO);

    /**
     * 审批完成后添加入职信息
     *
     * @param entryCreateReqDTO 入职信息
     * @return 编号
     */
    Long createEntryInfoAfterAudit(RelationsEntryCreateReqDTO entryCreateReqDTO);

    /**
     * 更新入职信息
     *
     * @param updateReqVO 更新信息
     */
    void updateEntry(@Valid RelationsEntrySaveReqVO updateReqVO);

    /**
     * 删除入职信息
     *
     * @param id 编号
     */
    void deleteEntry(Long id);

    /**
     * 获得入职信息
     *
     * @param id 编号
     * @return 入职信息
     */
    RelationsEntryDO getEntry(Long id);

    /**
     * 通过ID获得入职信息
     *
     * @param id
     * @return
     */
    RelationsEntryRespVO getById(Long id);

    /**
     * 获得入职信息分页
     *
     * @param pageReqVO 分页查询
     * @return 入职信息分页
     */
    PageResult<RelationsEntryDO> getEntryPage(RelationsEntryPageReqVO pageReqVO);

}