using System;
using System.Collections.Generic;
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Infrastructure.Extention;

namespace IRaCIS.Application.Interfaces
{
    public interface IDoctorService
    {
        #region  医生 基本信息

        /// <summary>
        /// 基本信息详情展示、编辑使用
        /// </summary>
        /// <param name="doctorId"></param>
        /// <returns></returns>
        Task<DoctorBasicInfoDTO> GetBasicInfo(Guid doctorId);

        /// <summary>                                                                                   
        /// 添加医生基本信息
        /// </summary>
        /// <param name="addBasicInfoParam"></param>
        /// <returns></returns>
        Task<IResponseOutput<DoctorBasicInfoCommand>>  AddOrUpdateDoctorBasicInfo(DoctorBasicInfoCommand addBasicInfoParam);

        #endregion

        #region 医生 工作信息

        /// <summary>
        /// 获取医生 工作信息
        /// </summary>
        /// <param name="doctorId"></param>
        /// <returns></returns>
        Task<EmploymentDTO> GetEmploymentInfo(Guid doctorId);
        /// <summary>
        /// 更新医生 工作信息
        /// </summary>
        /// <param name="updateDoctorWorkInfoViewModel"></param>
        /// <returns></returns>
        Task<IResponseOutput> UpdateEmploymentInfo(EmploymentCommand updateDoctorWorkInfoViewModel);

        #endregion

        /// <summary>
        /// 获取医生技能信息
        /// </summary>
        Task<SpecialtyDTO> GetSpecialtyInfo(Guid doctorId);

        /// <summary>
        /// 更新医生技能信息
        /// </summary>
        Task<IResponseOutput> UpdateSpecialtyInfo(SpecialtyCommand specialtyUpdateModel);

        /// <summary>
        /// 获取医生 审核状态
        /// </summary>
        Task<ResumeConfirmDTO> GetAuditState(Guid doctorId);

        /// <summary>
        /// 审核简历 和合作关系
        /// </summary>
        Task<IResponseOutput> UpdateAuditResume(ResumeConfirmCommand auditResumeParam);

        /// <summary> 医生详情  入组信息 </summary>
        DoctorEnrollInfoDTO GetDoctorIntoGroupInfo(Guid doctorId);

        /// <summary>  获取医生参与项目的Sow协议  </summary>
        List<SowDTO> GetDoctorSowList(Guid doctorId);

        /// <summary>  获取医生入组的 ack Sow  </summary>
        List<SowDTO> GetDoctorAckSowList(Guid doctorId);
    }
}
