using Journal.Core.Dtos;

namespace Journal.Core.Services.Ai;

public sealed class DisabledCoachService(string message = "Coach is not available. Set JOURNAL_AI_PROVIDER to enable.") : ICoachService
{
    private readonly string _message = message;

    public Task<CoachPlanDto> DailyCheckInAsync(CoachContextDto context, CancellationToken cancellationToken = default)
        => Task.FromResult(Disabled("daily_checkin"));

    public Task<CoachPlanDto> EveningReviewAsync(CoachContextDto context, CancellationToken cancellationToken = default)
        => Task.FromResult(Disabled("evening_review"));

    public Task<CoachPlanDto> WeeklyReviewAsync(CoachContextDto context, CancellationToken cancellationToken = default)
        => Task.FromResult(Disabled("weekly_review"));

    private CoachPlanDto Disabled(string kind) => new(
        Kind: kind,
        Title: "Coach Disabled",
        Summary: _message,
        Questions: [],
        SuggestedNextActions: [],
        SuggestedTags: [],
        Evidence: []);
}
