using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;
using System.Xml;
using MercatorUi.Forms.Other.OtherClasses;
// <CompileWithRoslyn />
namespace PeppolBox
{
public class Customizer : MercatorUi.ICustomizers.IPeppolBoxHelperCreated, MercatorUi.ICustomizers.IPeppolBoxHelperClosed
{
private MercatorUi._BaseClasses.ComboBoxExReadOnly comboFilter;
public void PeppolBoxHelperCreated(PeppolBoxHelper peppolBoxHelper)
{
peppolBoxHelper.Downloading += PeppolBoxHelper_Downloading;
if (peppolBoxHelper.PeppolBoxForm != null)
{
List<MercatorUi._BaseClasses.MercatorComboItem> l = new List<MercatorUi._BaseClasses.MercatorComboItem>
{
new MercatorUi._BaseClasses.MercatorComboItem("Company A", "0453917888"),
new MercatorUi._BaseClasses.MercatorComboItem("Company B", "0453917999"),
};
comboFilter = new MercatorUi._BaseClasses.ComboBoxExReadOnly
{
DisplayMember = "Description",
ValueMember = "Id",
DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed,
DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList,
FormattingEnabled = true,
ItemHeight = 14,
Location = new System.Drawing.Point(10, 5),
Name = "comboFilter",
Size = new System.Drawing.Size(100, 20),
Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled,
TabIndex = 0,
Tag = peppolBoxHelper
};
comboFilter.DataSource = l;
comboFilter.SelectedValueChanged += ComboFilter_SelectedValueChanged;
peppolBoxHelper.PeppolBoxForm.DrawLineBelowCaption = true;
peppolBoxHelper.PeppolBoxForm.PanelTop.Height = 30;
peppolBoxHelper.PeppolBoxForm.PanelTop.Visible = true;
peppolBoxHelper.PeppolBoxForm.PanelTop.Controls.Add(comboFilter);
}
FilterMessages(peppolBoxHelper);
}
public void PeppolBoxHelperClosed(PeppolBoxHelper peppolBoxHelper)
{
peppolBoxHelper.Downloading -= PeppolBoxHelper_Downloading;
if (comboFilter != null)
{
comboFilter.SelectedValueChanged -= ComboFilter_SelectedValueChanged;
comboFilter.Dispose();
}
}
private void ComboFilter_SelectedValueChanged(object sender, EventArgs e)
{
PeppolBoxHelper peppolBoxHelper = (PeppolBoxHelper)comboFilter.Tag;
FilterMessages(peppolBoxHelper);
}
private void PeppolBoxHelper_Downloading(object sender, PeppolBoxHelper.DownloadingEventArgs e)
{
PeppolBoxHelper peppolBoxHelper = (PeppolBoxHelper)sender;
FilterMessages(peppolBoxHelper);
}
private bool filterApplied;
private void FilterMessages(PeppolBoxHelper peppolBoxHelper)
{
if (comboFilter?.SelectedValue != null)
{
if (filterApplied)
{
peppolBoxHelper.Messages.RestoreAllMessages();
filterApplied = false;
}
foreach (PeppolBoxHelper.PeppolMessage message in peppolBoxHelper.Messages.Where(m => !string.IsNullOrEmpty(m.PeppolId)).ToArray())
{
if (!message.PeppolId.Contains(comboFilter.SelectedValue.ToString()))
{
peppolBoxHelper.Messages.Remove(message);
filterApplied = true;
}
}
}
}
}
}