using GermanApp.Application.DTOs;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace GermanApp.Application.Interfaces;
///
/// Interface for user progress report services.
/// Part of the Application layer.
///
public interface IUserReportService
{
///
/// Generates a progress report for a specific user.
///
/// The user ID
/// Cancellation token
/// User progress report
Task GenerateUserReportAsync(int userId, CancellationToken cancellationToken = default);
///
/// Generates progress reports for all users.
///
/// Cancellation token
/// List of all user progress reports
Task> GenerateAllUserReportsAsync(CancellationToken cancellationToken = default);
///
/// Gets lesson completion data for a user.
///
/// The user ID
/// Cancellation token
/// List of lesson completion data
Task> GetUserLessonProgressAsync(int userId, CancellationToken cancellationToken = default);
///
/// Gets quiz results for a user.
///
/// The user ID
/// Cancellation token
/// List of quiz results
Task> GetUserQuizResultsAsync(int userId, CancellationToken cancellationToken = default);
///
/// Exports user reports as CSV.
///
/// Cancellation token
/// CSV content as string
Task ExportReportsAsCsvAsync(CancellationToken cancellationToken = default);
}