using SA_LTT.Base;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace SA_LTT.UserInfo
|
{
|
public delegate void UserInfoChanged();
|
public class UserManager : XmlManager<User>
|
{
|
Equipment _equipment;
|
readonly string _extension = ".xml";
|
readonly string _filePath = @"User\";
|
|
public event UserInfoChanged Changed;
|
|
private Dictionary<string, User> _users = new Dictionary<string, User>();
|
|
private Dictionary<string, User> Users
|
{
|
get
|
{
|
return _users;
|
}
|
|
set
|
{
|
_users = value;
|
}
|
}
|
|
public UserManager(Equipment equipment)
|
{
|
_equipment = equipment;
|
RefreshUsers();
|
}
|
|
public void RefreshUsers()
|
{
|
DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
|
|
if(directoryInfo.Exists == false)
|
{
|
directoryInfo.Create();
|
}
|
|
foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml"))
|
{
|
User user = new User();
|
|
if(TryReadFile(fileInfo.FullName, out user))
|
{
|
if (Users.ContainsKey(user.Name))
|
{
|
Users[user.Name] = user.Clone();
|
}
|
else
|
{
|
Users.Add(user.Name, user.Clone());
|
}
|
}
|
}
|
|
// DIT 계정 없을 시 생성.
|
if (Users.ContainsKey("DIT") == false)
|
{
|
User user = new User();
|
user.Name = "DIT";
|
user.Password = "1234";
|
user.Level = UserLevel.Master;
|
|
SaveOrCreate(user);
|
}
|
|
// Operator 계정 없을 시 생성.
|
if (Users.ContainsKey("Operator") == false)
|
{
|
User user = new User();
|
user.Name = "Operator";
|
user.Password = "1234";
|
user.Level = UserLevel.Operator;
|
|
SaveOrCreate(user);
|
}
|
}
|
|
public void SaveOrCreate(User user)
|
{
|
SaveFile(Equipment.infoFilePath + _filePath + user.Name + _extension, user);
|
|
if (Users.ContainsKey(user.Name))
|
{
|
Users[user.Name] = user.Clone();
|
}
|
else
|
{
|
Users.Add(user.Name, user.Clone());
|
}
|
|
Changed?.Invoke();
|
}
|
|
public void Delete(string userName)
|
{
|
DeleteFile(Equipment.infoFilePath + _filePath + userName + _extension);
|
|
if (Users.ContainsKey(userName))
|
{
|
Users.Remove(userName);
|
}
|
|
Changed?.Invoke();
|
}
|
|
public bool ExistsUser(string userName)
|
{
|
if(_users.ContainsKey(userName))
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
public User GetUser(string userName)
|
{
|
if(ExistsUser(userName))
|
{
|
return _users[userName].Clone();
|
}
|
else
|
{
|
return null;
|
}
|
}
|
|
public User[] GetUserList()
|
{
|
List<User> userList = new List<User>();
|
|
foreach(User user in Users.Values)
|
{
|
userList.Add(user.Clone());
|
}
|
|
return userList.ToArray();
|
}
|
}
|
}
|