using Tiobon.Core.Common;
using Tiobon.Core.Model;

namespace Tiobon.Core.IServices;

/// <summary>
/// 考试记录(自定义服务接口)
/// </summary>	
public interface IGhre_ExamRecordServices : IBaseServices<Ghre_ExamRecord, Ghre_ExamRecordDto, InsertGhre_ExamRecordInput, EditGhre_ExamRecordInput>
{
    Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, QueryBody body);

    Task<ServiceResult> ModifyAdjustScore(string examRecordId, EditGhre_ExamRecordInput edit);

    Task<ServiceResult<Ghre_ExamRecordExtend>> ExtendAsync(long examRecordId, long? groupId);

    Task<ServiceResult> CommentAsync(Ghre_ExamRecordExtend extend, long examRecordId);

    Task<ServiceResult<QueryExam>> QueryExamAsync(long id);

    Task<ServiceResult> StartExamAsync(long examRecordId);

    Task<ServiceResult> RetakeExamAsync(long examRecordId);

    Task<ServiceResult> AnswerExamAsync(List<DefaultGhre_ExamPaperPreview> answers, long studyRecordId);

    Task<ServiceResult> ViewExamPaperCallBackAsync(long examRecordId);

    Task<ServiceResult> ModifyActualScore(string examRecordId, EditGhre_ExamRecordInput edit);
    Task<ServiceResult> ModifyFinallyIsPass(string examRecordId, EditGhre_ExamRecordInput edit);

    Task<ServiceResult> SubmitAttachment(long examRecordId, List<InsertGhre_AttachmentInput> attachments);

    /// <summary>
    /// 发放证书
    /// </summary>
    /// <returns></returns>
    Task<ServiceResult> IssueCertificate();
     
    Task<ServiceResult<List<ExamGroup>>> QueryGroups(long examRecordId);
}