using MTWorkHR.Core.Entities;
using MTWorkHR.Core.IDto;
using MTWorkHR.Core.IRepositories.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MTWorkHR.Core.IRepositories
{
    public interface ITeamUserRepository : IRepository<TeamUser>
    {
        Task<Tuple<ICollection<TeamUser>, int>> GetAllAsync(IPagingInputDto pagingInputDto);
        Task<TeamUser> GetByIdAsync(long id);
        Task<TeamUser> AddAsync(TeamUser entity);
        Task<IList<TeamUser>> AddRangeAsync(IList<TeamUser> entity);
        Task DeleteAsync(TeamUser entity);
        Task DeleteAsync(IEnumerable<TeamUser> entities);

        Task<Tuple<IQueryable<TeamUser>, int>> GetAllWithChildrenAsync();
        Task<Tuple<IQueryable<Team>, int>> GetUserTeams(string userId);
    }
}
