using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading.Tasks;
using Aitex.Core.Util;
using MECF.Framework.Common.Account.Extends;
namespace Aitex.Core.Account
{
[ServiceKnownType(typeof(CredentialKeepAliveStates))]
[ServiceKnownType(typeof(CredentialState))]
[ServiceKnownType(typeof(LoginRequestResults))]
[ServiceKnownType(typeof(Credential))]
[ServiceKnownType(typeof(LoginClientInfo))]
[ServiceKnownType(typeof(AccountEx))]
[ServiceKnownType(typeof(LoginResult))]
[ServiceKnownType(typeof(CredentialKeepAliveCheckResult))]
[ServiceContract]
public interface IAccountService
{
#region Common Operations
///
/// 注册视图。
///
///
[OperationContract]
void RegisterViews(List views);
///
/// 获取所有视图。
///
///
[OperationContract]
SerializableDictionary GetAllViewList();
///
/// TBD
///
///
[OperationContract]
string GetProcessViewPermission();
///
/// TBD
///
///
///
[OperationContract]
bool SaveProcessViewPermission(string viewXML);
///
/// 获取系统支持的所有菜单。
///
///
[OperationContract]
List GetAllMenus();
#endregion
#region Permission Operations
///
/// 获取指定角色ID和菜单名称的访问权限。
///
/// 角色ID
/// 菜单名称
///
[OperationContract]
int GetMenuPermission(string roleId, string menuName);
///
/// 获取所有角色的权限列表。
///
///
[OperationContract]
SerializableDictionary> GetAllRolesPermission();
///
/// 保存所有角色的权限。
///
///
///
[OperationContract]
bool SaveAllRolesPermission(Dictionary> data);
#endregion
#region Role Operations
///
/// 获取角色列表。
///
///
[OperationContract]
List GetAllRoleList();
///
/// 获取角色列表。
///
///
[OperationContract]
IEnumerable GetAllRoles();
///
/// 获取角色列表。
///
///
[OperationContract]
List GetRoles();
///
/// 更新指定的角色。
///
/// 角色信息
///
[OperationContract]
bool UpdateRole(Role role);
///
/// 删除指定的角色。
///
/// 角色ID
///
[OperationContract]
bool DeleteRole(string roleId);
///
/// 获取指定角色的可访问菜单列表。
///
///
///
[OperationContract]
List GetMenusByRole(string roleId);
#endregion
#region Account Operations
///
/// 创建账号。
///
/// 新账号
///
[OperationContract]
CreateAccountResult CreateAccount(Account newAccount);
///
/// 删除账号。
///
/// 账号ID
///
[OperationContract]
DeleteAccountResult DeleteAccount(string accountId);
///
/// 更新指定的账号。
///
/// 账号信息
///
[OperationContract]
UpdateAccountResult UpdateAccount(Account account);
///
/// 更新指定的账号。
///
/// 账号
///
[OperationContract]
bool UpdateAccountEx(AccountEx account);
///
/// 删除指定的账号。
///
/// 账号名
///
[OperationContract]
bool DeleteAccountEx(string loginName);
///
/// 获取指定账号信息。
///
/// 账号ID
///
[OperationContract]
GetAccountInfoResult GetAccountInfo(string accountId);
///
/// 获取账号列表。
///
///
[OperationContract]
GetAccountListResult GetAccountList();
///
/// 获取账号列表。
///
///
[OperationContract]
List GetAllAccountExList();
///
/// 获取账号列表。
///
///
[OperationContract]
List GetAccounts();
///
/// 修改账号密码。
///
/// 账号ID
/// 新密码
///
[OperationContract]
ChangePwdResult ChangePassword(string accountId, string newPassword);
///
/// 获取登录用户列表。
///
///
[OperationContract]
List GetLoginUsers();
///
/// 踢出指定的账号。
///
/// 账号ID
/// 踢出原因
[OperationContract]
void KickUserOut(string accountId, string reason);
#endregion
#region Login/Logout Operations
///
/// 登录RT。
///
/// 用户名
/// 密码
/// 角色ID
/// 登录客户端信息
///
[OperationContract]
Task LoginEx(string userName, string password, string roleID,
LoginClientInfo clientInfo);
///
/// 注销登录。
///
/// 当前登录的令牌
[OperationContract]
void LogoutEx(Guid myToken);
///
/// 取消登录请求。
///
///
[OperationContract]
void CancelLoginRequest(string userName);
///
/// 确认异地登录请求。
///
/// 正在请求登录的令牌
[OperationContract]
void ConfirmLoginRequest(string userName);
///
/// 拒绝异地登录请求。
///
/// 正在请求登录的令牌
[OperationContract]
void RejectLoginRequest(string userName);
///
/// 激活凭据。
///
/// 当前登录的令牌
///
[OperationContract]
CredentialKeepAliveCheckResult KeepAlive(Guid myToken);
#endregion
}
}