⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usermanagementengine.cs

📁 该源代码用 C# 写成
💻 CS
📖 第 1 页 / 共 2 页
字号:
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 + -