using System.Threading.Tasks;
using Abp.Domain.Services;
using YGNT.QuestionLibrary.Core.Papers;
using YGNT.QuestionLibrary.Core.Tasks.Domain.Dto;

namespace YGNT.QuestionLibrary.Core.Tasks.Domain
{
    /// <summary>
    /// 试卷生成管理
    /// </summary>
    public interface IPaperProduceManager : IDomainService
    {
        /// <summary>
        /// 创建试卷生成任务
        /// </summary>
        /// <param name="paper"></param>
        /// <param name="paperProduce"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<PaperProduceTask> CreateTaskAsync(Paper paper, PaperProduceDto paperProduce, long? userId = null);

        /// <summary>
        /// 生成试卷
        /// </summary>
        /// <param name="produceTask"></param>
        /// <param name="paperProduce"></param>
        void Produce(PaperProduceTask produceTask, PaperProduceDto paperProduce);

        /// <summary>
        /// 生成试卷
        /// </summary>
        /// <param name="paper"></param>
        /// <param name="produceTask"></param>
        /// <param name="paperProduce"></param>
        /// <returns></returns>
        Paper Produce(Paper paper, PaperProduceTask produceTask, PaperProduceDto paperProduce);


    }
}