using IRaCIS.Application.Contracts;
using IRaCIS.Core.Infra.EFCore;
using Microsoft.AspNetCore.Mvc;

namespace IRaCIS.Application.Interfaces
{
    public interface IVisitPlanService
    {
        Task<IResponseOutput> AddOrUpdateVisitStage(VisitPlanCommand visitPlan);
        Task<IResponseOutput> ConfirmTrialVisitPlan(Guid trialId);
        Task<IResponseOutput> DeleteVisitStage(Guid id);
        Task<IActionResult> DownloadInflunceStudyList(Guid visitPlanInfluenceStatId);
        Task<List<VisitPlanInfluenceSubjectVisitStatDTO>> GetInfluenceHistoryList(Guid trialId, [FromServices] IRepository<VisitPlanInfluenceStat> _influnceStatRepository);
        Task<PageOutput<VisitStageDTO>> GetTrialVisitStageList(VisitPlanQueryDTO param);
        Task<IEnumerable<VisitStageSelectDTO>> GetTrialVisitStageSelect(Guid trialId);
        Task<VisitPlanView> GetVisitStageList(Guid trialId);
    }
}