using UniVerse.Application.DTOs.Common;
using UniVerse.Application.DTOs.Reviews;

namespace UniVerse.Application.Interfaces;

public interface IReviewService
{
    Task<ReviewDto> CreateAsync(int userId, CreateReviewRequest request);
    Task<ReviewDto> GetByIdAsync(int id);
    Task<ReviewDto> UpdateAsync(int id, int userId, UpdateReviewRequest request);
    Task DeleteAsync(int id, int userId, bool isAdmin = false);
    Task<PagedResult<ReviewDto>> GetByLectureAsync(int lectureId, PaginationRequest pagination, int? currentUserId = null, bool isAdmin = false);
    Task<PagedResult<ReviewDto>> GetByUserAsync(int userId, PaginationRequest pagination);
    Task<PagedResult<ReviewDto>> GetAllAsync(ReviewFilterRequest filter);
    Task ReanalyzeAsync(int id);
}
