solve some issues
[GitHub/Stricted/SpeedportHybridControl.git] / SpeedportHybridControl / PageModel / LoginPageModel.cs
1 using System;
2 using SpeedportHybridControl.Implementations;
3 using SpeedportHybridControl.Data;
4 using System.Windows;
5 using System.Threading;
6 using SpeedportHybridControl.Model;
7
8 namespace SpeedportHybridControl.PageModel
9 {
10 class LoginPageModel : SuperViewModel
11 {
12 private string _ip = "speedport.ip";
13 private string _password;
14 private string _loginButtonText = "Login";
15 private bool _showPassword;
16 private bool _savePassword;
17 private Visibility _passwordBoxVisibility = Visibility.Visible;
18 private Visibility _passwordTextBoxVisibility = Visibility.Hidden;
19 private Visibility _loginFieldsVisibility = Visibility.Visible;
20
21 private DelegateCommand _showPasswordCommand;
22 private DelegateCommand _loginCommand;
23
24 public string ip
25 {
26 get { return _ip; }
27 set { SetProperty(ref _ip, value); }
28 }
29
30 public string password
31 {
32 get { return _password; }
33 set {
34 // TODO: find a better way
35 if (value.IsNullOrEmpty().Equals(true))
36 {
37 if (SavePassword.Equals(true))
38 return;
39
40 }
41 SetProperty(ref _password, value);
42 }
43 }
44
45 public string LoginButtonText
46 {
47 get { return _loginButtonText; }
48 set { SetProperty(ref _loginButtonText, value); }
49 }
50
51 public bool ShowPassword
52 {
53 get { return _showPassword; }
54 set { SetProperty(ref _showPassword, value); }
55 }
56
57 public bool SavePassword
58 {
59 get { return _savePassword; }
60 set { SetProperty(ref _savePassword, value); }
61 }
62
63 public Visibility PasswordBoxVisibility
64 {
65 get { return _passwordBoxVisibility; }
66 set { SetProperty(ref _passwordBoxVisibility, value); }
67 }
68
69 public Visibility PasswordTextBoxVisibility
70 {
71 get { return _passwordTextBoxVisibility; }
72 set { SetProperty(ref _passwordTextBoxVisibility, value); }
73 }
74
75 public Visibility LoginFieldsVisibility
76 {
77 get { return _loginFieldsVisibility; }
78 set { SetProperty(ref _loginFieldsVisibility, value); }
79 }
80
81 public DelegateCommand ShowPasswordCommand
82 {
83 get { return _showPasswordCommand; }
84 set { SetProperty(ref _showPasswordCommand, value); }
85 }
86
87 public DelegateCommand LoginCommand
88 {
89 get { return _loginCommand; }
90 set { SetProperty(ref _loginCommand, value); }
91 }
92
93 private void OnShowPasswordCommandExecute()
94 {
95 if (ShowPassword.Equals(true))
96 {
97 PasswordBoxVisibility = Visibility.Hidden;
98 PasswordTextBoxVisibility = Visibility.Visible;
99 }
100 else {
101 PasswordBoxVisibility = Visibility.Visible;
102 PasswordTextBoxVisibility = Visibility.Hidden;
103 }
104 }
105
106 private void OnLoginCommandExecute()
107 {
108 MainWindowModel mwm = Application.Current.FindResource("MainWindowModel") as MainWindowModel;
109
110 if (LoginButtonText.Equals("Login"))
111 {
112 if (SpeedportHybridAPI.getInstance().ip.Equals(ip).Equals(false))
113 {
114 SpeedportHybridAPI.getInstance().ip = ip;
115 }
116
117 bool login = SpeedportHybridAPI.getInstance().login(password);
118 if (login.Equals(true))
119 {
120 if (SavePassword.Equals(true))
121 {
122 SettingsModel SettingsModel = new SettingsModel
123 {
124 password = password,
125 ip = SpeedportHybridAPI.getInstance().ip
126 };
127
128 Settings.save(SettingsModel);
129 }
130 else {
131 SettingsModel SettingsModel = new SettingsModel
132 {
133 password = string.Empty,
134 ip = SpeedportHybridAPI.getInstance().ip
135 };
136
137 Settings.save(SettingsModel);
138 }
139
140 LoginFieldsVisibility = Visibility.Hidden;
141 mwm.ButtonOverviewPageIsActive = true;
142 mwm.ButtonDSLPageIsActive = true;
143 mwm.ButtonLteInfoPageIsActive = true;
144 mwm.ButtonSyslogPageIsActive = true;
145 mwm.ButtonTR181PageIsActive = true;
146 mwm.ButtonPhonePageIsActive = true;
147 mwm.ButtonLanPageIsActive = true;
148 mwm.ButtonInterfacePageIsActive = true;
149 mwm.ButtonControlsPageIsActive = true;
150
151 LoginButtonText = "Logout";
152 mwm.LoginButtonContent = "Logout";
153 }
154 else {
155 new Thread(() => { MessageBox.Show("Login fehlgeschlagen. Sie haben ein falsches Gerätepasswort eingegeben. Bitte versuchen Sie es erneut und achten Sie auf die korrekte Schreibweise.", "Confirmation", MessageBoxButton.OK, MessageBoxImage.Error); }).Start();
156 LogManager.WriteToLog("Login Failed, wrong password");
157 }
158 }
159 else {
160 if (SpeedportHybridAPI.getInstance().logout().Equals(true))
161 {
162 LogoutAction();
163 }
164 }
165 }
166
167 public void LogoutAction()
168 {
169 LteInfoModel lim = Application.Current.FindResource("LteInfoModel") as LteInfoModel;
170 lim.ClosePopup();
171 lim.StopTimer();
172
173 DslPageModel dpm = Application.Current.FindResource("DslPageModel") as DslPageModel;
174 dpm.StopTimer();
175
176 MainWindowModel mwm = Application.Current.FindResource("MainWindowModel") as MainWindowModel;
177 LoginFieldsVisibility = Visibility.Visible;
178 mwm.ButtonOverviewPageIsActive = false;
179 mwm.ButtonDSLPageIsActive = false;
180 mwm.ButtonLteInfoPageIsActive = false;
181 mwm.ButtonSyslogPageIsActive = false;
182 mwm.ButtonTR181PageIsActive = false;
183 mwm.ButtonPhonePageIsActive = false;
184 mwm.ButtonLanPageIsActive = false;
185 mwm.ButtonInterfacePageIsActive = false;
186 mwm.ButtonControlsPageIsActive = false;
187
188 LoginButtonText = "Login";
189 mwm.LoginButtonContent = "Login";
190 }
191
192 public LoginPageModel()
193 {
194 SettingsModel settings = Settings.load();
195 if (settings.ip.IsNullOrEmpty().Equals(false))
196 {
197 ip = settings.ip;
198 }
199
200 SpeedportHybridAPI.getInstance().ip = ip;
201
202 if (settings.password.IsNullOrEmpty().Equals(false))
203 {
204 SavePassword = true;
205 password = settings.password;
206 }
207
208 ShowPasswordCommand = new DelegateCommand(new Action(OnShowPasswordCommandExecute));
209 LoginCommand = new DelegateCommand(new Action(OnLoginCommandExecute));
210 }
211 }
212 }