using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Tsi1.BusinessLayer.Dtos;
using Tsi1.BusinessLayer.Helpers;
using Tsi1.DataLayer.Entities;

namespace Tsi1.BusinessLayer.Interfaces
{
    public interface ICourseService
    {
        Task<ServiceResult<List<CoursePreviewDto>>> GetCoursePreviews(int userId, string userType);

        Task<ServiceResult<Course>> Create(CourseCreateDto newCourse);

        Task<ServiceResult<bool>> Matriculate(int userId, int courseId);

        Task<ServiceResult<bool>> AddProfessorToCourse(ProfessorCourseDto professorCourseDto);

        Task<ServiceResult<List<CoursePreviewDto>>> GetAll(int tenantId);

        Task<ServiceResult<bool>> Modify(int courseId, CourseCreateDto courseDto);

        Task<ServiceResult<Course>> Delete(int courseId);

        Task<ServiceResult<bool>> DropOutFromCourse(int userId, int courseId);

        Task<ServiceResult<bool>> RemoveProfessorToCourse(ProfessorCourseDto professorCourseDto);
        Task<ServiceResult<List<UserPreviewDto>>> GetProfessors(int courseId);
    }
}