using ComPDFKit.DigitalSign;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.PDFDocument;
using Compdfkit_Tools.Helper;
using Nager.Country;
using System;
using System.Collections.Generic;
using System.Linq;
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;
namespace Compdfkit_Tools.PDFControl
{
///
/// Interaction logic for AddCustomCertificationControl.xaml
///
public partial class AddCustomCertificationControl : UserControl
{
public event EventHandler SaveEvent;
public event EventHandler CancelEvent;
public CertificateInfo CertificateInfo = new CertificateInfo();
private string _grantorName = string.Empty;
public string GrantorName
{
get => _grantorName;
set
{
_grantorName = value;
CertificateInfo.GrantorName = value;
}
}
private string _email = string.Empty;
public string Email
{
get => _email;
set
{
_email = value;
CertificateInfo.Email = value;
}
}
private string _organization = string.Empty;
public string Organization
{
get => _organization;
set
{
_organization = value;
CertificateInfo.Organization = value;
}
}
private string _organizationalUnit = string.Empty;
public string OrganizationalUnit
{
get => _organizationalUnit;
set
{
_organizationalUnit = value;
CertificateInfo.OrganizationUnit = value;
}
}
private readonly CountryProvider countryProvider = new CountryProvider();
private readonly List countryNames = new List();
public event EventHandler ContinueEvent;
public AddCustomCertificationControl()
{
InitializeComponent();
this.DataContext = this;
FillComboBox();
}
private void FillComboBox()
{
FillComboBoxWithCountries();
FillComboBoxWithPropose();
}
private void FillComboBoxWithPropose()
{
PurposeCmb.Items.Clear();
PurposeCmb.Items.Add(LanguageHelper.SigManager.GetString("Option_Sign"));
PurposeCmb.Items.Add(LanguageHelper.SigManager.GetString("Option_Encrypt"));
PurposeCmb.Items.Add(LanguageHelper.SigManager.GetString("Option_SignAndEncrypt"));
}
private void FillComboBoxWithCountries()
{
var countries = countryProvider.GetCountries();
foreach (var country in countries)
{
var formattedName = $"{country.Alpha2Code} - {country.CommonName}";
countryNames.Add(formattedName);
}
AreaCmb.ItemsSource = countryNames;
}
private void CancelBtn_Click(object sender, RoutedEventArgs e)
{
CancelEvent?.Invoke(this, EventArgs.Empty);
}
private void SaveBtn_Click(object sender, RoutedEventArgs e)
{
if (CertificateInfo.GrantorName == string.Empty)
{
ErrorTipsText.Text = "Please input Grantor Name";
return;
}
if(CertificateInfo.Email == string.Empty)
{
ErrorTipsText.Text = "Please input Email";
return;
}
if (!CommonHelper.IsValidEmail(CertificateInfo.Email))
{
ErrorTipsText.Text = "Email format is not correct";
return;
}
ContinueEvent?.Invoke(this, CreateCertificationMode.SaveCertificate);
}
private void AreaCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (AreaCmb.SelectedItem != null)
{
string selectedText = AreaCmb.SelectedItem.ToString();
string[] parts = selectedText.Split('-');
CertificateInfo.Area = parts[0].Trim(); // Extract the Alpha2Code
}
}
private void PurposeCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (PurposeCmb.SelectedItem != null)
{
CertificateInfo.PurposeType = (CPDFCertUsage)PurposeCmb.SelectedIndex + 1;
}
}
}
}