using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ComPDFKit.Controls.Helper;
using ComPDFKit.DigitalSign;
namespace ComPDFKit.Controls.PDFControl
{
///
/// Interaction logic for SummaryControl.xaml
///
public partial class SummaryControl : UserControl,INotifyPropertyChanged
{
private string award;
public string Award
{
get => award;
set => UpdateProper(ref award, value);
}
private string grantor;
public string Grantor
{
get => grantor;
set => UpdateProper(ref grantor, value);
}
private string validityFrom;
public string ValidityFrom
{
get => validityFrom;
set => UpdateProper(ref validityFrom, value);
}
private string validityTo;
public string ValidityTo
{
get => validityTo;
set => UpdateProper(ref validityTo, value);
}
private string intendedUsage;
public string IntendedUsage
{
get => intendedUsage;
set => UpdateProper(ref intendedUsage, value);
}
public SummaryControl()
{
InitializeComponent();
DataContext = this;
}
public void LoadSummaryInfo(CPDFSignatureCertificate certificate)
{
string awardText;
string grantorText = DictionaryValueConverter.GetGrantorFromDictionary(certificate.SubjectDict);
string email = DictionaryValueConverter.GetEmailFormDictionary(certificate.SubjectDict);
var usageList = DictionaryValueConverter.GetUsage(certificate);
string keyUsageText = "";
if(email != null)
{
awardText = grantorText + " <" + email + ">";
}
else
{
awardText = grantorText;
}
for(int i = 0; i < usageList.Count; i++)
{
keyUsageText += usageList[i];
keyUsageText += (i == usageList.Count - 1) ? "" : ", ";
}
Award = awardText;
Grantor = grantorText;
ValidityFrom = CommonHelper.GetExactDateFromString(certificate.ValidityStarts);
ValidityTo = CommonHelper.GetExactDateFromString(certificate.ValidityEnds);
IntendedUsage = keyUsageText;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void UpdateProper(ref T properValue,
T newValue,
[CallerMemberName] string properName = "")
{
if (object.Equals(properValue, newValue))
return;
properValue = newValue;
OnPropertyChanged(properName);
}
protected void OnPropertyChanged([CallerMemberName] string propertyName = "") =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}