using ce.autofac.extension;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace learun.iapplication
{
	/// <summary>
	/// 版 本 EasyCode EC管理后台
	/// Copyright (c) 2019-present EC管理有限公司
	/// 创建人:tobin
	/// 日 期:2019.09.25
	/// 描 述:用户关联对象
	/// </summary>
	public interface UserRelationIBLL : IBLL
	{
		#region 获取数据

		/// <summary>
		/// 获取对象主键列表信息
		/// </summary>
		/// <param name="userId">用户主键</param>
		/// <param name="category">分类:1-角色2-岗位</param>
		/// <returns></returns>
		Task<IEnumerable<UserRelationEntity>> GetObjectIdList(string userId, int category);

		/// <summary>
		/// 获取对象主键列表信息
		/// </summary>
		/// <param name="userId">用户主键</param>
		/// <param name="category">分类:1-角色2-岗位</param>
		/// <returns></returns>
		Task<string> GetObjectIds(string userId, int category);

		/// <summary>
		/// 获取用户主键列表信息
		/// </summary>
		/// <param name="objectId">用户主键</param>
		/// <returns></returns>
		Task<IEnumerable<UserRelationEntity>> GetUserIdList(string objectId);

		/// <summary>
		/// 获取用户主键列表信息
		/// </summary>
		/// <param name="objectIdList">关联或角色主键集合</param>
		/// <returns></returns>
		Task<IEnumerable<UserRelationEntity>> GetUserIdList(IEnumerable<string> objectIdList);

		#endregion 获取数据

		#region 提交数据

		/// <summary>
		/// 保存用户对应对象数据
		/// </summary>
		/// <param name="objectId">对应对象主键</param>
		/// <param name="category">分类:1-角色2-岗位</param>
		/// <param name="userIds">对用户主键列表</param>
		Task SaveEntityList(string objectId, int category, string userIds);

		#endregion 提交数据
	}
}