using New_College.IServices.BASE;
using New_College.Model;
using New_College.Model.Models;
using New_College.Model.ViewModels;
using New_College.Model.ViewModels.Query;
using New_College.Model.ViewModels.Result;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace New_College.IServices
{
    /// <summary>
    /// ITest_PsychMeasurementInfoServices
    /// </summary>	
    public interface ITest_PsychMeasurementInfoServices : IBaseServices<Test_PsychMeasurementInfo>
    {
        Task<List<PsychMeasurementListResult>> GetPsychListByCateAndCustomerId(PsychMeasurementQuery query);

        Task<bool> SavePsych(SavePsychQuery query);

        Task<ShowPsychologicalResult> GetPsychDetail(ResultLookQuery query);

        Task<bool> SaveHolland(SaveHollandQuery query);


        Task<TagtestingHollandResult> GetHollandResult(ResultLookQuery query);

        Task<UserResult> GetMBTIResult(ResultLookQuery query);

        Task<MessageModel<SubjectEvBillDTO>> SubjectChartRadar(ResultLookQuery query);

        /// <summary>
        /// 传入用户Id 获取霍兰德测评状态
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<MessageModel<string>> GetHollandStatus(IdQuery query);

        /// <summary>
        /// 传入用户Id 获取学科探索测评状态
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<MessageModel<bool>> GetSubjectSelectStatus(IdQuery query);

        /// <summary>
        /// 获取测评最新周期Id
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<MessageModel<CycleInfoResult>> GetReportCycleInfo(IdQuery query);

        /// <summary>
        /// 获取三种推荐选科
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<MessageModel<List<SubjectSelectResult>>> GetSubjectSelectResult(NewSubjectQuery query);

        /// <summary>
        /// 根绝霍兰德获取推荐选科
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<MessageModel<string>> GetHollandSubject(HollandSubjectQuery query);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<EvaluationResponse>> GetEvaluations(EvaluationRequest request);

    }
}