using Microsoft.Win32;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
|
namespace SHARP_CLAS_UI
|
{
|
public class User_Info_Manager
|
{
|
#region Define
|
string str_extension = ".xml";
|
#endregion
|
|
#region Property
|
private static readonly Lazy<User_Info_Manager> _instatnce = new Lazy<User_Info_Manager>(() => new User_Info_Manager());
|
|
public static User_Info_Manager Instance
|
{
|
get
|
{
|
return _instatnce.Value;
|
}
|
}
|
#endregion
|
|
#region Field
|
private Dictionary<string, User_Info> User_Infos;
|
|
private Xml_Manager<User_Info> xml_manager = new Xml_Manager<User_Info>();
|
|
private string file_path;
|
#endregion
|
|
#region Construct
|
public User_Info_Manager()
|
{
|
User_Infos = new Dictionary<string, User_Info>();
|
Get_User_Info_Datas();
|
}
|
#endregion
|
|
#region Function
|
private void Get_File_Path()
|
{
|
RegistryKey rkk = Registry.CurrentUser.OpenSubKey(Equipment.Registry_Path, true);
|
|
try
|
{
|
if (rkk == null)
|
{
|
rkk = Registry.CurrentUser.CreateSubKey(Equipment.Registry_Path);
|
|
rkk.SetValue("USER_INFO", @"C:\SHARP_CLAS\SETTING\USER_INFO\");
|
file_path = @"C:\SHARP_CLAS\SETTING\USER_INFO\";
|
}
|
else
|
{
|
object value = rkk.GetValue("USER_INFO");
|
if (value == null)
|
{
|
rkk.SetValue("USER_INFO", @"C:\SHARP_CLAS\SETTING\USER_INFO\");
|
file_path = @"C:\SHARP_CLAS\SETTING\USER_INFO\";
|
}
|
else
|
{
|
file_path = value.ToString();
|
}
|
}
|
}
|
finally
|
{
|
rkk.Close();
|
}
|
}
|
|
private void Get_User_Info_Datas()
|
{
|
Get_File_Path();
|
|
User_Infos.Clear();
|
|
if (Directory.Exists(file_path))
|
{
|
DirectoryInfo di = new DirectoryInfo(file_path);
|
FileInfo[] recipes = di.GetFiles($"*{str_extension}");
|
|
foreach (FileInfo recipe in recipes)
|
{
|
User_Info user_info = new User_Info();
|
|
if (xml_manager.Try_Read_File(file_path + recipe, out user_info))
|
{
|
if (User_Infos.ContainsKey(user_info.ID))
|
{
|
User_Infos[user_info.ID] = user_info;
|
}
|
else
|
{
|
User_Infos.Add(user_info.ID, user_info);
|
}
|
}
|
}
|
}
|
else
|
{
|
Directory.CreateDirectory(file_path);
|
}
|
|
if (!User_Infos.ContainsKey("DIT"))
|
{
|
User_Info info = new User_Info();
|
info.Name = "DIT";
|
info.Password = "DIT1234";
|
info.Level = En_User_Level.Master;
|
info.ID = "DIT";
|
|
Create_User_Info(info);
|
}
|
|
if(!User_Infos.ContainsKey("OP"))
|
{
|
User_Info info = new User_Info();
|
info.Name = "OP";
|
info.Password = "1234";
|
info.Level = En_User_Level.Operator;
|
info.ID = "OP";
|
|
Create_User_Info(info);
|
}
|
}
|
|
public void Refresh_User_Info()
|
{
|
Get_User_Info_Datas();
|
}
|
|
public bool Exist_User_Info(string ID)
|
{
|
foreach (User_Info info in User_Infos.Values)
|
{
|
if (ID == info.ID)
|
return true;
|
}
|
|
return false;
|
}
|
|
public bool Create_User_Info(User_Info info)
|
{
|
if (!Exist_User_Info(info.ID))
|
{
|
if (xml_manager.Try_Save_File(file_path + info.ID + str_extension, info))
|
{
|
User_Infos.Add(info.ID, info.Clone());
|
return true;
|
}
|
else
|
return false;
|
}
|
else
|
return false;
|
}
|
|
public bool Delete_User_Info(string ID)
|
{
|
if (Exist_User_Info(ID))
|
{
|
User_Infos.Remove(ID);
|
|
FileInfo fi = new FileInfo(file_path + ID + str_extension);
|
|
if (fi.Exists)
|
{
|
fi.Delete();
|
}
|
}
|
|
return true;
|
}
|
|
public bool Save_User_Info(string ID, User_Info info)
|
{
|
if (Exist_User_Info(ID))
|
{
|
User_Infos[ID] = info.Clone();
|
User_Infos[ID].ID = ID;
|
|
if (xml_manager.Try_Save_File(file_path + ID + str_extension, User_Infos[ID]))
|
{
|
return true;
|
}
|
else
|
return false;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
public bool Try_Get_User_Info(string ID, out User_Info info)
|
{
|
if (Exist_User_Info(ID))
|
{
|
info = User_Infos[ID].Clone();
|
return true;
|
}
|
else
|
{
|
info = null;
|
return false;
|
}
|
}
|
|
public User_Info Get_User_Info(string ID)
|
{
|
if (Exist_User_Info(ID))
|
{
|
return User_Infos[ID].Clone();
|
}
|
else
|
{
|
return null;
|
}
|
}
|
|
public User_Info[] Get_User_Infos()
|
{
|
List<User_Info> infos = new List<User_Info>();
|
infos.Clear();
|
|
foreach (User_Info info in User_Infos.Values)
|
{
|
infos.Add(info.Clone());
|
}
|
|
return infos.ToArray();
|
}
|
#endregion
|
}
|
}
|