using DigitalData.UserManager.Application.DTOs.GroupOfUser;
using DigitalData.UserManager.Domain.Entities;
using DigitalData.Core.DTO;

namespace DigitalData.UserManager.Application.Contracts
{
    public interface IGroupOfUserService : IBaseService<GroupOfUserCreateDto, GroupOfUserReadDto, GroupOfUserUpdateDto, GroupOfUser>
    {
        Task<Result> DeleteAsyncByGroupUserId(int groupId, int userId);

        Task<DataResult<IEnumerable<GroupOfUserReadDto>>> ReadAllAsyncWith(bool user, bool group);

        Task<Result> HasGroup(string username, string groupname, bool caseSensitive = true);

        Task<DataResult<IEnumerable<GroupOfUserReadDto>>> ReadByUsernameAsync(string username);
    }
}