d23004
2023-05-24 fa87a558389d9d425f70afa1c8de54c69875ef2c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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();
        }
    }
}