📄 usermanagementengine.cs
字号:
using System;
using System.Collections.Specialized;
using System.Text;
using Org.InteliIM;
using Org.InteliIM.Users;
namespace Org.InteliIM.Activities.Interactive
{
/// <summary>
/// 用户管理自动应答引擎
/// </summary>
public class UserManagementEngine
: AbstractEngine
{
private User user = null;
/// <summary>
/// 用户名
/// </summary>
public User User
{
get
{
return this.user;
}
set
{
this.user = value;
}
}
private IMServer server = null;
/// <summary>
/// 服务管理器
/// </summary>
public IMServer Server
{
get
{
return this.server;
}
set
{
this.server = value;
}
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="server"></param>
public UserManagementEngine(IMServer server)
{
this.Server = server;
this.user = new User();
this.CurrentStatus = new NullStatus(this);
}
/// <summary>
/// 基本状态
/// </summary>
public abstract class BasicStatus: Status
{
protected Status nextStatus = null;
private UserManagementEngine engine;
public UserManagementEngine Engine
{
get
{
return this.engine;
}
set
{
this.engine = value;
}
}
#region Status 成员
public virtual Status PreviousStatus
{
get
{
return null;
}
}
public virtual Status NextStatus
{
get
{
return nextStatus;
}
}
public virtual void Accept(string input)
{
}
public virtual string getDisplayString()
{
return null;
}
#endregion
public BasicStatus(UserManagementEngine engine)
{
this.Engine = engine;
}
}
/// <summary>
/// 空状态
/// </summary>
class NullStatus:BasicStatus
{
public NullStatus(UserManagementEngine engine)
:base(engine)
{
this.nextStatus = new WelcomeStatus(this.Engine);
}
public override string getDisplayString()
{
return "";
}
}
/// <summary>
/// 欢迎状态
/// </summary>
class WelcomeStatus: BasicStatus
{
public WelcomeStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
if (input.Equals("1"))
{
nextStatus = new DisplaySystemIntroductionStatus(this.Engine);
}
else if (input.Equals("2"))
{
nextStatus = new UserInformationStatus(this.Engine);
}
else if (input.Equals("3"))
{
nextStatus = new SetupUserStatus(this.Engine);
}
else if (input.Equals("4"))
{
nextStatus = this;
}
else if (input.Equals("#"))
{
nextStatus = new FinishServiceStatus(this.Engine);
}
}
public override string getDisplayString()
{
StringBuilder sb = new StringBuilder();
sb.Append("\n InteliIM 自助服务");
sb.Append("\n");
sb.Append("\n1.系统简介.");
sb.Append("\n2.用户管理.");
sb.Append("\n3.用户服务.");
sb.Append("\n4.再次播放此菜单.");
sb.Append("\n#.退出系统");
return sb.ToString();
}
}
/// <summary>
/// 用户信息状态
/// </summary>
class UserInformationStatus: BasicStatus
{
public UserInformationStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
if (input.Equals("1"))
{
nextStatus = new RegisterUserStatus(this.Engine);
}
else if (input.Equals("2"))
{
nextStatus = this;
}
else if (input.Equals("3"))
{
nextStatus = new UnregisterUserStatus(this.Engine);
}
else if (input.Equals("4"))
{
nextStatus = new QueryUserStatus(this.Engine);
}
else if (input.Equals("5"))
{
nextStatus = new ListUsersStatus(this.Engine);
}
}
public override string getDisplayString()
{
StringBuilder sb = new StringBuilder();
sb.Append("\n1.注册新用户.");
sb.Append("\n2.再次播放此菜单.");
sb.Append("\n3.删除用户.");
sb.Append("\n4.查询用户.");
sb.Append("\n5.列举用户名单.");
return sb.ToString();
}
/// <summary>
/// 列举用户名单状态
/// </summary>
class ListUsersStatus
: BasicStatus
{
public ListUsersStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
if (input.Equals("1"))
{
nextStatus = new UserInformationStatus(this.Engine);
}
else if (input.Equals("2"))
{
nextStatus = this;
}
}
public override string getDisplayString()
{
StringBuilder sb = new StringBuilder();
sb.Append("已注册用户数: " +
this.Engine.Server.ServiceMan.UserMan.GetUsers().Count + "\n");
ContactCollection users = this.Engine.Server.ServiceMan.UserMan.GetUsers();
StringCollection onlineUsers = this.Engine.Server.GetOnlineUsers();
if (users != null)
{
foreach(Contact user in users)
{
sb.Append("\n用户名: " + user.Id);
sb.Append("\t昵称: " + user.NickName);
sb.Append("\t状态: " + (onlineUsers.Contains(user.Id)?"":""));
}
}
sb.Append("\n1.用户管理");
sb.Append("\n2.重复播放此菜单");
return sb.ToString();
}
}
/// <summary>
/// 注册用户状态
/// </summary>
class RegisterUserStatus
: BasicStatus
{
public RegisterUserStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
nextStatus = new EnterUserIdStatus(this.Engine);
}
public override string getDisplayString()
{
return "注册新用户...";
}
/// <summary>
/// 输入用户名状态
/// </summary>
class EnterUserIdStatus
: BasicStatus
{
public EnterUserIdStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
this.Engine.User.Id = input;
nextStatus = new EnterUserPasswordStatus(this.Engine);
}
public override string getDisplayString()
{
return "用户名:";
}
}
/// <summary>
/// 输入用户密码状态
/// </summary>
class EnterUserPasswordStatus
: BasicStatus
{
public EnterUserPasswordStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
this.Engine.User.Password = input;
nextStatus = new EnterUserEmailStatus(this.Engine);
}
public override string getDisplayString()
{
return "密码:";
}
}
/// <summary>
/// 输入电子邮件状态
/// </summary>
class EnterUserEmailStatus
: BasicStatus
{
public EnterUserEmailStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
this.Engine.User.ContactInfo.Email = input;
nextStatus = new EnterUserSexStatus(this.Engine);
}
public override string getDisplayString()
{
return "输入电子邮件:";
}
}
/// <summary>
/// 输入性别状态
/// </summary>
class EnterUserSexStatus
: BasicStatus
{
public EnterUserSexStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
if (input.Equals("1"))
this.Engine.User.GeneralInfo.Gender = ContactGender.Male;
else
this.Engine.User.GeneralInfo.Gender = ContactGender.Female;
nextStatus = new CheckNewUserInformationStatus(this.Engine);
}
public override string getDisplayString()
{
return "性别: 1. 男 2. 女";
}
}
/// <summary>
/// 核对注册信息状态
/// </summary>
class CheckNewUserInformationStatus
: BasicStatus
{
public CheckNewUserInformationStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
if (input.Equals("1"))
{
nextStatus = new RegisterNewUserStatus(this.Engine);
}
else if (input.Equals("2"))
{
nextStatus = new EnterUserIdStatus(this.Engine);
}
else if (input.Equals("#"))
{
nextStatus = new FinishServiceStatus(this.Engine);
}
}
public override string getDisplayString()
{
StringBuilder sb = new StringBuilder();
sb.Append("\n您的注册信息如下,请仔细核对是否正确:");
sb.Append("\n用户名:" + this.Engine.User.Id);
sb.Append("\n密码:" + this.Engine.User.Password);
sb.Append("\n性别:" + ContactGeneralInfo.ToString(this.Engine.User.GeneralInfo.Gender));
sb.Append("\n电子邮件:" + this.Engine.User.ContactInfo.Email);
sb.Append("\n1.信息填写正确,提交注册用户申请");
sb.Append("\n2.信息填写有误,重新填写注册信息");
sb.Append("\n#.退出系统");
return sb.ToString();
}
}
/// <summary>
/// 提交注册用户申请状态
/// </summary>
class RegisterNewUserStatus
: BasicStatus
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -