using CommunityToolkit.Mvvm.Input;
using FLY.Thick.Base.Common;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace FLY.Thick.Base.UI
{
///
/// PgPwManager.xaml 的交互逻辑
///
public partial class PgPwManager : Page
{
PgPwManagerVm viewModel;
public PgPwManager()
{
InitializeComponent();
}
[Unity.InjectionMethod]
public void Init(PasswordAuthorize passwordAuthorize)
{
viewModel = new PgPwManagerVm();
viewModel.Init(passwordAuthorize);
this.DataContext = viewModel;
}
}
public class PgPwManagerVm : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection Pws { get; } = new ObservableCollection();
public ObservableCollection UiLvs { get; } = new ObservableCollection();
public RelayCommand ApplyCmd { get; }
PasswordAuthorize passwordAuthorize;
public PgPwManagerVm()
{
ApplyCmd = new RelayCommand(Apply);
}
public void Init(PasswordAuthorize passwordAuthorize)
{
this.passwordAuthorize = passwordAuthorize;
this.passwordAuthorize.PropertyChanged += PasswordAuthorize_PropertyChanged;
update_list();
}
void update_list()
{
Pws.Clear();
UiLvs.Clear();
if (this.passwordAuthorize.Db.Pws != null)
{
foreach (var c in this.passwordAuthorize.Db.Pws)
{
Pws.Add(new PasswordCell() { Password = c.Password, Level = c.Level, Description = c.Description });
}
}
if (this.passwordAuthorize.Db.UiLvs != null)
{
foreach (var c in this.passwordAuthorize.Db.UiLvs)
{
UiLvs.Add(new UiLvCell() { UiName = c.UiName, Description = c.Description, Level = c.Level });
}
}
}
private void PasswordAuthorize_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Db")
{
update_list();
}
}
private void Apply()
{
//检测
foreach (var pw in Pws)
{
if (string.IsNullOrEmpty(pw.Password))
{
string tit = (string)Application.Current.TryFindResource("str.PgPwManager.FormatErr");
string msg = (string)Application.Current.TryFindResource("str.PgPwManager.PwIsNull");
FLY.ControlLibrary.Window_WarningTip.Show(tit, msg);
return;
}
pw.Password = pw.Password.Trim();
if (pw.Level < 0 || pw.Level > 10)
{
string tit = (string)Application.Current.TryFindResource("str.PgPwManager.FormatErr");
string msg = (string)Application.Current.TryFindResource("str.PgPwManager.LvIsOverrange");
FLY.ControlLibrary.Window_WarningTip.Show(tit, msg);
return;
}
if ((from _pw in Pws where _pw.Password == pw.Password select _pw).Count() > 1)
{
string tit = (string)Application.Current.TryFindResource("str.PgPwManager.FormatErr");
string msg = (string)Application.Current.TryFindResource("str.PgPwManager.PwIsDuplication");
FLY.ControlLibrary.Window_WarningTip.Show(tit, msg);
return;
}
}
foreach (var c in UiLvs)
{
if (c.Level < 0 || c.Level > 10)
{
string tit = (string)Application.Current.TryFindResource("str.PgPwManager.FormatErr");
string msg = (string)Application.Current.TryFindResource("str.PgPwManager.LvIsOverrange");
FLY.ControlLibrary.Window_WarningTip.Show(tit, msg);
return;
}
}
var p = new PasswordJsonDb();
p.Pws.AddRange(Pws);
p.UiLvs.AddRange(UiLvs);
this.passwordAuthorize.Apply(p);
{
string tit = (string)Application.Current.TryFindResource("str.PgPwManager.ApplySuccessfully");
string format = (string)Application.Current.TryFindResource("str.PgPwManager.TotalNPw");
string msg = string.Format(format, Pws.Count());
FLY.ControlLibrary.Window_Tip.Show(tit, msg, TimeSpan.FromSeconds(2));
}
return;
}
}
}