using System.Threading.Tasks;
using Znyc.Recruitment.Admin.Commons.Entitys;
using Znyc.Recruitment.Admin.Commons.IServices;
using Znyc.Recruitment.Admin.Commons.Pages;
using Znyc.Recruitment.Admin.Security.Dtos;
using Znyc.Recruitment.Admin.Security.Entitys;

namespace Znyc.Recruitment.Admin.Security.IServices
{
    /// <summary>
    /// </summary>
    public interface IRecruitmentService : IService<RecruitmentEntity, RecruitmentOutputDto, long>
    {
        /// <summary>
        ///     根据条件查询数据库,并返回对象集合(用于分页数据显示)
        /// </summary>
        /// <param name="search">查询的条件</param>
        /// <returns>指定对象的集合</returns>
        Task<PageResult<RecruitmentOutputDto>> FindWithPagerSearchAsync(SearchRecruitmentModel search);

        /// <summary>
        ///     异步新增数据
        /// </summary>
        /// <param name="intput"></param>
        /// <returns></returns>
        Task<CommonResult> InsertAsync(RecruitmentEntity intput);

        /// <summary>
        ///     异步修改数据
        /// </summary>
        /// <param name="tinfo"></param>
        /// <returns></returns>
        Task<CommonResult> UpdateAsync(RecruitmentEntity tinfo);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<RecruitmentOutputDto> GetById(long id);

        /// <summary>
        ///     下架招聘信息
        /// </summary>
        /// <param name="id"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<CommonResult> RevocationAsync(long id, long userId);
    }
}