using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
//name space para el dll de brother
using bpac;

namespace ImprimeEtiqueta
{
    class Program
    {
        //definicion del nombre del template
        private const string TEMPLATE_SIMPLE = "\\Etiquetas\\enviar\\LBN.LBX";	
        

        static void Main(string[] args)
        {
            try
            {
                if (args[0] !="")//si tiene algun argumento almenos 
                {
                    //se toma el path del exe
                    string path = Environment.CurrentDirectory;
                    System.Console.WriteLine("CURRENT DIRECTORY {0}", path); 
                    //concateno con el nombre del template
                    string templatePath = path + "\\" + TEMPLATE_SIMPLE;
                    System.Console.WriteLine("templatePath {0}", templatePath);
                    //se intancia la clase de brother 
                    bpac.DocumentClass doc = new DocumentClass();
                    // si encuentra y puede abrir el template
                    if (doc.Open(templatePath) != false)
                    {
                        //variables para los nombres de los objetos en el template
                        string[] obj = { "", "", "", "", "" };
                        // toma los objetos declarados dentro del documento, osea, los campos
                        // dentro de la etiqueta: NOMBRE, FECHA, FOLIO, BARRAS
                        bpac.IObjects objs = doc.Objects;
                          System.Console.WriteLine("total Objetos {0}", objs.Count);
                        for (int i = 0; i < objs.Count; ++i)
                        {
                            obj[i] = objs[i].Name;
                            System.Console.WriteLine("-->{0} ", obj[i]);

                        }
                        System.Console.WriteLine("Imprimiendo a impresora {0} ", doc.GetPrinterName()  );
                        //pasamos el texto a imprimir para los objetos de la etiquete
                        int indice = 0;
                        foreach (string o in obj)
                        {
                            if (objs.Count > indice)
                            {
                                doc.GetObject(o).Text = args[indice];
                                System.Console.WriteLine("objeto {0} ", doc.GetObject(o).Text );
                                indice++;
                            }
                        }
                        //enviamos a imprimir 
                        //recuperar el numero de etiquetas a imprimir que viene en el ultimo argumento
                        string copyCount = args[indice];
                        doc.StartPrint("", PrintOptionConstants.bpoDefault);
                        doc.PrintOut(Int32.Parse(copyCount), PrintOptionConstants.bpoDefault);
                        // LEER TECLA
                        //  System.Console.ReadKey();
                        doc.EndPrint();
                        doc.Close();
                    }
                    else
                    {
                        System.Console.WriteLine("No pudimos abrir el DocumentClass()");
                    }
                 }
             }
            catch(Exception ex)
            {
                throw new Exception();
                System.Console.WriteLine(ex.Message);
            }
        }
     }
}
