using System; using System.Linq; using System.Windows.Forms; using System.Drawing.Printing; using System.Runtime.InteropServices; namespace Neo.LegitimateLicences.ActiveX.Printing { [Guid("5F1575A6-3700-44E9-BC8B-E6E3327E676F")] public interface IPaymentAdvicePrinterInterface { void PaymentAdvicePrint(string applicationNumber, string applicantName, string associationName, string amountDue, string applicationDescription, string idNumber, string vehicleReg, string chassisNumber, string printedBy, short copies, string printerPath, int height, int width, bool preview); } [ProgId("Neo.LegitimateLicences.ReceiptPrinterControl")] [Guid("EDD50D9F-3DE5-422B-8135-C93882B291D4")] [ClassInterface(ClassInterfaceType.None)] public partial class PaymentAdvicePrinterControl : UserControl, IPaymentAdvicePrinterInterface { public PaymentAdvicePrinterControl() { InitializeComponent(); #region Testing this.ApplicationNumberTextBox.Text = "APP0000002"; this.ApplicationDescriptionTextBox.Text = "New Operating Licence for member PATRICK SBONELO N"; this.ApplicantNameTextBox.Text = "Test Guy"; this.AssociationNameTextBox.Text = "Association..."; this.AmountDueTextBox.Text = "300.00"; this.IdNumberTextBox.Text = "7812065192081"; this.PrintedByTextBox.Text = "H Bantjes"; this.PrinterPathTextBox.Text = ""; this.HeightTextBox.Text = "297"; this.WidthTextBox.Text = "210"; this.VehicleRegTextbox.Text = "ND163066"; this.ChassisNumberTextBox.Text = "WDF9046632A954152"; CopiesTextBox.Text = "1"; AssociationNameTextBox.Text = "Test association"; PreviewCheckBox.Checked = true; #endregion } private void PrintButtonClick(object sender, EventArgs e) { Print(); } #region public PaymentAdvicePrint method public void PaymentAdvicePrint(string applicationNumber, string applicantName, string associationName, string amountDue, string applicationDescription, string idNumber, string vehicleReg, string chassisNumber, string printedBy, short copies, string printerPath, int height, int width, bool preview) { ApplicationNumberTextBox.Text = applicationNumber; ApplicantNameTextBox.Text = applicantName; AssociationNameTextBox.Text = associationName; AmountDueTextBox.Text = amountDue; ApplicationDescriptionTextBox.Text = applicationDescription; IdNumberTextBox.Text = idNumber; VehicleRegTextbox.Text = vehicleReg; ChassisNumberTextBox.Text = chassisNumber; PrintedByTextBox.Text = printedBy; if (copies.ToString() == "999") { var userInput = Microsoft.VisualBasic.Interaction.InputBox("Please enter the number of receipts you would like to print.", "Print receipts", "6", 400, 400); try { if (userInput.Length == 0) { throw new Exception("Invalid Input"); } CopiesTextBox.Text = Int32.Parse(userInput).ToString(); } catch { MessageBox.Show("Invalid Number Entered."); return; } } else { CopiesTextBox.Text = copies.ToString(); } HeightTextBox.Text = height.ToString(); WidthTextBox.Text = width.ToString(); PreviewCheckBox.Checked = preview; PrinterPathTextBox.Text = GetPrinter(printerPath); if (PrinterPathTextBox.Text.Length == 0) { MessageBox.Show("No printer named " + printerPath + " found."); } else { try { Print(); if (!preview) { MessageBox.Show(this.CopiesTextBox.Text + " copies printed to " + PrinterPathTextBox.Text); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } #endregion #region private Print() Method private void Print() { var paymentAdvicePrinter = new PaymentAdvicePrinter(ApplicationNumberTextBox.Text, ApplicantNameTextBox.Text, AssociationNameTextBox.Text, AmountDueTextBox.Text, ApplicationDescriptionTextBox.Text, IdNumberTextBox.Text, VehicleRegTextbox.Text, ChassisNumberTextBox.Text, PrintedByTextBox.Text, Convert.ToInt16(CopiesTextBox.Text), GetPrinter(PrinterPathTextBox.Text), Convert.ToInt16(HeightTextBox.Text), Convert.ToInt16(WidthTextBox.Text), PreviewCheckBox.Checked); paymentAdvicePrinter.Print(); } #endregion #region getPrinter private static string GetPrinter(string printerPath) { var printerName = ""; foreach (var printer in PrinterSettings.InstalledPrinters.Cast().Where(printer => printer.ToLower().Contains(printerPath.ToLower()))) { printerName = printer; } return printerName; } #endregion } }