using System;
using IRaCIS.Core.Application.Service.WorkLoad.DTO;
using IRaCIS.Core.Infrastructure.Extention;

namespace IRaCIS.Application.Interfaces
{
    public interface ITrialEnrollmentService
    {
        IResponseOutput AddOrUpdateEnroll(EnrollCommand addOrUpdateModel);

        Task< PageOutput<EnrollViewModel>> GetTrialDoctorList(EnrollGetQuery challengeQuery);

        /// <summary>入组流程-筛选医生 [select]</summary>
        IResponseOutput SelectReviewers( Guid trialId, Guid[] doctorIdArray);

        /// <summary>入组流程-向CRO提交医生[Submit]</summary>
        IResponseOutput SubmitReviewer( Guid trialId, Guid[] doctorIdArray, int commitState);

        /// <summary>入组流程-CRO确定医生名单 [ Approve]</summary>
        IResponseOutput ApproveReviewer( Guid trialId, Guid[] doctorIdArray, int auditState);

        /// <summary>入组流程-向CRO提交医生[Submit]</summary>
        IResponseOutput ConfirmReviewer(Guid trialId, Guid[] doctorIdArray, int confirmState);


        IResponseOutput EnrollBackOrOut( Guid trialId, Guid doctorId, int optType,DateTime? outEnrollTime);

    }
}