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);
    }
}