using AsbCloudApp.Data;
using AsbCloudApp.Data.User;
using AsbCloudApp.Services;
using System.Collections.Generic;

namespace AsbCloudApp.Repositories;

/// <summary>
/// Репозиторий пользователей
/// </summary>
public interface IUserRepository : ICrudRepository<UserExtendedDto>
{
    /// <summary>
    /// Получить список всех прав пользователя (включая наследование групп)
    /// </summary>
    /// <param name="idUser"></param>
    /// <returns></returns>
    IEnumerable<PermissionDto> GetNestedPermissions(int idUser);

    /// <summary>
    /// Получить список ролей пользователя (включая наследование)
    /// </summary>
    /// <param name="idUser"></param>
    /// <param name="nestedLevel"></param>
    /// <returns></returns>
    IEnumerable<UserRoleDto> GetRolesByIdUser(int idUser, int nestedLevel = 0);

    /// <summary>
    /// определяет есть ли у пользователя указанное разрешение
    /// </summary>
    /// <param name="idUser"></param>
    /// <param name="permissionName"></param>
    /// <returns></returns>
    public bool HasPermission(int idUser, string permissionName);
}