📄 usermanagementengine.cs
字号:
using System;
using System.Collections.Specialized;
using System.Text;
using Org.InteliIM;
using Org.InteliIM.Users;
using System.Collections.Generic;
using Org.InteliIM.Communications;
namespace Org.InteliIM.Applications.Messenger.Interactive
{
/// <summary>
/// Represents a user management engine for the interactive service.
/// </summary>
public class UserManagementEngine
: AbstractEngine
{
private User user = null;
/// <summary>
/// Gets or sets the user.
/// </summary>
public User User
{
get
{
return this.user;
}
set
{
this.user = value;
}
}
private IMServer server = null;
/// <summary>
/// Gets or sets the server.
/// </summary>
public IMServer Server
{
get
{
return this.server;
}
set
{
this.server = value;
}
}
/// <summary>
/// Initializes a new instance of the UserManagementEngine class.
/// </summary>
/// <param name="server"></param>
public UserManagementEngine(IMServer server)
{
this.Server = server;
this.user = new User();
this.CurrentStatus = new NullStatus(this);
}
/// <summary>
/// The basic status.
/// </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 members
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>
/// The empty status.
/// </summary>
class NullStatus:BasicStatus
{
public NullStatus(UserManagementEngine engine)
:base(engine)
{
this.nextStatus = new WelcomeStatus(this.Engine);
}
public override string getDisplayString()
{
return "";
}
}
/// <summary>
/// The welcome status.
/// </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 self service.");
sb.Append("\n");
sb.Append("\n1.Introduction.");
sb.Append("\n2.User Management.");
sb.Append("\n3.User Services.");
sb.Append("\n4.Replay.");
sb.Append("\n#.Exit");
return sb.ToString();
}
}
/// <summary>
/// The status for managing user information.
/// </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.Register a new user.");
sb.Append("\n2.replay.");
sb.Append("\n3.Delete an existed user.");
sb.Append("\n4.Query user.");
sb.Append("\n5.List users.");
return sb.ToString();
}
/// <summary>
/// The status for listing users.
/// </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("Users registered: " +
this.Engine.Server.ServiceMan.UserManager.GetUsers().Count + "\n");
Collection<Contact> users = this.Engine.Server.ServiceMan.UserManager.GetUsers();
StringCollection onlineUsers = this.Engine.Server.GetOnlineUsers();
if (users != null)
{
foreach(Contact user in users)
{
sb.Append("\nId: " + user.Id);
sb.Append("\tNick Name: " + user.NickName);
sb.Append("\tStatus: " + (onlineUsers.Contains(user.Id)?"":""));
}
}
sb.Append("\n1.User Management");
sb.Append("\n2.Replay");
return sb.ToString();
}
}
/// <summary>
/// The status for registering new users.
/// </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 "Register an new user...";
}
/// <summary>
/// The status for entering the id for the new user.
/// </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 "Id:";
}
}
/// <summary>
/// The status for entering password for the new user.
/// </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 "Password:";
}
}
/// <summary>
/// The status for entering email for the new user.
/// </summary>
class EnterUserEmailStatus
: BasicStatus
{
public EnterUserEmailStatus(UserManagementEngine engine)
:base(engine)
{
}
public override void Accept(String input)
{
this.Engine.User.ContactInfo.Email = input;
nextStatus = new EnterUserGendertatus(this.Engine);
}
public override string getDisplayString()
{
return "Email:";
}
}
/// <summary>
/// The status for entering gender for the new user.
/// </summary>
class EnterUserGendertatus
: BasicStatus
{
public EnterUserGendertatus(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 "Gender: 1. Male 2. Female";
}
}
/// <summary>
/// The status for checking the new user's information.
/// </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>
/// The status for registering the new user.
/// </summary>
class RegisterNewUserStatus
: BasicStatus
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -