예제 #1
0
 public SafeComSimulationTask(SafeComSimulationController controller, SafeComSimulationActivityData activityData, IPrinterInfo device)
     : base()
 {
     _safecomController = controller;
     _taskConfig        = activityData;
     _device            = device;
 }
예제 #2
0
 public HpacSimulationTask(HpacSimulationController controller, HpacSimulationActivityData activityData, IPrinterInfo device)
     : base()
 {
     _hpacController = controller;
     _taskConfig     = activityData;
     _device         = device;
 }
        public void Initialize(PluginConfigurationData configuration, PluginEnvironment environment)
        {
            // Initialize the activity data by deserializing it from an existing copy of configuration information.
            _activityData = configuration.GetMetadata <MailMergeActivityData>();

            DynamicLocalPrintQueueDefinition definition = configuration.PrintQueues.SelectedPrintQueues.First() as DynamicLocalPrintQueueDefinition;
            IPrinterInfo    printDevice = ConfigurationServices.AssetInventory.GetAsset(definition.AssetId) as IPrinterInfo;
            PrintDriverInfo printDriver = ConfigurationServices.AssetInventory.AsInternal().GetPrintDrivers().First(n => n.PrintDriverId == definition.PrintDriverId);

            _localPrintQueueInfo = new DynamicLocalPrintQueueInfo(printDevice, printDriver, definition.PrinterPort, definition.PrintDriverConfiguration);

            PopulateMailMergeUi();
        }
        public void Initialize(PluginConfigurationData configuration, PluginEnvironment environment)
        {
            _activityData          = configuration?.GetMetadata <PrintQueueManagementActivityData>();
            _documentSelectionData = configuration?.Documents;

            DynamicLocalPrintQueueDefinition definition = configuration?.PrintQueues.SelectedPrintQueues.First() as DynamicLocalPrintQueueDefinition;
            IPrinterInfo printDevice = ConfigurationServices.AssetInventory.GetAsset(definition.AssetId) as IPrinterInfo;

            _printDriver         = ConfigurationServices.AssetInventory.AsInternal().GetPrintDrivers().First(n => n.PrintDriverId == definition.PrintDriverId);
            _localPrintQueueInfo = new DynamicLocalPrintQueueInfo(printDevice, _printDriver, definition.PrinterPort, definition.PrintDriverConfiguration);

            LoadDocuments();
            LoadUi();
        }
예제 #5
0
        private IEnumerable <PrintQueueInfo> CreateDynamicPrintQueues(PrintQueueSelectionData printQueueSelectionData)
        {
            using (AssetInventoryContext context = DbConnect.AssetInventoryContext())
            {
                var printQueueDefinitions = printQueueSelectionData.SelectedPrintQueues.OfType <DynamicLocalPrintQueueDefinition>();
                var assetIds  = printQueueDefinitions.Select(n => n.AssetId);
                var driverIds = printQueueDefinitions.Select(n => n.PrintDriverId);

                var assets  = context.Assets.Where(n => assetIds.Contains(n.AssetId)).ToAssetInfoCollection();
                var drivers = context.PrintDrivers.Where(n => driverIds.Contains(n.PrintDriverId)).ToPrintDriverInfoCollection();

                foreach (DynamicLocalPrintQueueDefinition definition in printQueueDefinitions)
                {
                    IPrinterInfo    printDevice = assets.FirstOrDefault(n => n.AssetId == definition.AssetId) as IPrinterInfo;
                    PrintDriverInfo printDriver = drivers.FirstOrDefault(n => n.PrintDriverId == definition.PrintDriverId);
                    if (printDevice != null && printDriver != null)
                    {
                        yield return(new DynamicLocalPrintQueueInfo(printDevice, printDriver, definition.PrinterPort, definition.PrintDriverConfiguration));
                    }
                }
            }
        }
        public PluginExecutionResult Execute(PluginExecutionData executionData)
        {
            _executionData = executionData;
            HpacSimulationActivityData activityData = _executionData.GetMetadata <HpacSimulationActivityData>();
            PluginExecutionResult      result       = new PluginExecutionResult(PluginResult.Passed);

            IPrinterInfo assetInfo  = null;
            ServerInfo   hpacServer = null;

            try
            {
                assetInfo  = (IPrinterInfo)_executionData.Assets.GetRandom();
                hpacServer = _executionData.Servers.First();
                LogUsageData(assetInfo, hpacServer);
            }
            catch (ArgumentNullException ex)
            {
                return(new PluginExecutionResult(PluginResult.Error, ex));
            }
            catch (InvalidOperationException ex)
            {
                return(new PluginExecutionResult(PluginResult.Error, ex));
            }

            if (_hpacController == null)
            {
                _hpacController = new HpacSimulationController(_executionData.Environment.UserDnsDomain, hpacServer.HostName, _executionData.Credential);
            }

            UpdateUI(hpacServer.HostName, assetInfo.AssetId, activityData.PullAllDocuments);
            UpdateStatus("Starting HPAC Pull Activity...");

            //On error or skip, Implement Retries
            PluginRetryManager retryManager = new PluginRetryManager(_executionData, UpdateStatus);

            result = retryManager.Run(() => ExecuteHandler(activityData, assetInfo));

            return(result);
        }
예제 #7
0
        private void LoadPrintQueues(PrintQueueDefinitionCollection printQueueDefinitions)
        {
            _printQueues.Clear();

            foreach (LocalPrintQueueDefinition local in printQueueDefinitions.OfType <LocalPrintQueueDefinition>())
            {
                _printQueues.Add(new LocalPrintQueueInfo(local.QueueName, local.AssociatedAssetId));
            }

            var remotePrintQueues = ConfigurationServices.AssetInventory.GetRemotePrintQueues().ToList();

            foreach (RemotePrintQueueDefinition remote in printQueueDefinitions.OfType <RemotePrintQueueDefinition>())
            {
                var queue = remotePrintQueues.FirstOrDefault(n => n.PrintQueueId == remote.PrintQueueId);
                if (queue != null)
                {
                    _printQueues.Add(queue);
                }
            }

            var dynamicQueueDefinitions = printQueueDefinitions.OfType <DynamicLocalPrintQueueDefinition>().ToList();

            if (dynamicQueueDefinitions.Any())
            {
                var printers = ConfigurationServices.AssetInventory.GetAssets(dynamicQueueDefinitions.Select(n => n.AssetId)).OfType <IPrinterInfo>().ToList();
                var drivers  = ConfigurationServices.AssetInventory.AsInternal().GetPrintDrivers().ToList();
                foreach (DynamicLocalPrintQueueDefinition definition in dynamicQueueDefinitions)
                {
                    IPrinterInfo    printer = printers.FirstOrDefault(n => n.AssetId == definition.AssetId);
                    PrintDriverInfo driver  = drivers.FirstOrDefault(n => n.PrintDriverId == definition.PrintDriverId);
                    if (printer != null && driver != null)
                    {
                        _printQueues.Add(new DynamicLocalPrintQueueInfo(printer, driver, definition.PrinterPort, definition.PrintDriverConfiguration));
                    }
                }
            }
        }
예제 #8
0
        internal static void ThunkSetPrinter(IntPtr hPrinter, IPrinterInfo pPrinter)
        {
            if (pPrinter == null)
            {
                Error.ArgumentNull("pPrinter");
            }

            var type  = pPrinter.GetType();
            var level = GetPrinterInfoLevel(type);

            if (level < 2)
            {
                Error.ArgumentOutOfRange("pPrinter");
            }

            var pBuffer = IntPtr.Zero;

            try
            {
                pBuffer = Marshal.AllocHGlobal(Marshal.SizeOf(type));
                Marshal.StructureToPtr(pPrinter, pBuffer, false);

                if (!SetPrinter(hPrinter, level, pBuffer, PrinterCommand.None))
                {
                    Error.ThrowLastError();
                }
            }
            finally
            {
                if (pBuffer != IntPtr.Zero)
                {
                    Marshal.DestroyStructure(pBuffer, type);
                    Marshal.FreeHGlobal(pBuffer);
                }
            }
        }
예제 #9
0
        protected void PrintJobViewItemLabel(IPrinterInfo printerInfo, EditPrdnJobViewModel viewJob, ProductionJob job = null)
        {
            if ((viewJob.PrdnTypeCode == null) && (job.IfNotNull(j => j.Run) != null))
            {
                viewJob.loadFromRun(job.Run);
            }
            if ((viewJob.WorksheetID != null) && (viewJob.EditWorksheet == null))
            {
                WorksheetEditViewModel.LoadViewJobEditWorksheet(viewJob, job);
            }

            PrdnZplMultiParam parm = new PrdnZplMultiParam(viewJob);
            ZplPrinterHelper.NetworkMultiZpl(printerInfo.PrinterHostName, (int)printerInfo.PrinterPort, parm);
        }
예제 #10
0
        protected void PrintJobLabel(IPrinterInfo printerInfo, ProductionJob job)
        {
            InvItemViewModel itemModel = null;
            EditPrdnJobViewModel viewJob = null;

            if (job.CustID == PrdnDataHelper.PrdnCustIDCST)
            {
                itemModel = LookupInvItem(job.SerialNo);
            }
            else
            {
                viewJob = Mapper.Map<ProductionJob, EditPrdnJobViewModel>(job);
            }

            if (itemModel != null)
            {
                PrintItemViewLabel(printerInfo, itemModel, job);
            }
            else if (viewJob != null)
            {
                PrintJobViewItemLabel(printerInfo, viewJob, job);
            }
        }
예제 #11
0
        protected void PrintItemViewLabel(IPrinterInfo printerInfo, InvItemViewModel item, ProductionJob job = null)
        {
            PrdnZplMultiParam parm = new PrdnZplMultiParam(item);

            if (job != null)
            {
                parm.Priority = job.IfNotNull(j => j.Priority).IfNotNull(p => p.Name);

                parm.SetPrdnOrderDisp(
                    job.IfNotNull(j => j.Run).IfNotNull(r => r.PrdnOrderNo),
                    job.IfNotNull(j => j.Run).IfNotNull(r => r.PrdnType.IfNotNull(t => t.Code)),
                    job.IfNotNull(j => j.RunSeqNo));

                parm.ShipCD = job.IfNotNull(j => j.ShipMethodCD);
            }

            ZplPrinterHelper.NetworkMultiZpl(printerInfo.PrinterHostName, (int)printerInfo.PrinterPort, parm);
        }
예제 #12
0
        protected void LoadPrinterInfo(IPrinterInfo info)
        {
            if (info.LabelPrinterID == null)
            {
                UserSettingsModel settings = GetUserSettings();
                info.LabelPrinterID = settings.IfNotNull(s => s.LabelPrinterID);
            }

            if ((String.IsNullOrWhiteSpace(info.PrinterHostName) || (info.PrinterPort == null))
            &&
            (info.IfNotNull(s => s.LabelPrinterID) > 0))
            {
                var printer = (from p in PrdnDBContext.LabelPrinters
                               where p.ID == info.LabelPrinterID
                               select p).FirstOrDefault();
                if (printer != null)
                {
                    info.LabelPrinterID = printer.ID.ToInt();
                    info.PrinterName = printer.Name;
                    info.PrinterHostName = printer.HostName;
                    info.PrinterPort = printer.Port.ToInt();
                }
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DynamicLocalPrintQueueInfo" /> class.
 /// </summary>
 /// <param name="printDevice">The print device to use for this print queue.</param>
 /// <param name="printDriver">The print driver to use for this print queue.</param>
 /// <param name="printerPort">The <see cref="PrinterPortInfo" /> to use when creating the queue.</param>
 /// <param name="printDriverConfiguration">The print driver configuration.</param>
 /// <exception cref="ArgumentNullException">
 /// <paramref name="printDevice" /> is null.
 /// <para>or</para>
 /// <paramref name="printDriver" /> is null.
 /// <para>or</para>
 /// <paramref name="printerPort" /> is null.
 /// </exception>
 public DynamicLocalPrintQueueInfo(IPrinterInfo printDevice, PrintDriverInfo printDriver, PrinterPortInfo printerPort, PrintDriverConfiguration printDriverConfiguration)
     : this(printDevice?.AssetId, printDevice?.Address, printDriver, printerPort, printDevice?.PrinterPort ?? 0, printDevice?.SnmpEnabled ?? false, printDriverConfiguration)
 {
 }
        private PluginExecutionResult ExecuteHandler(HpacSimulationActivityData activityData, IPrinterInfo assetInfo)
        {
            HpacSimulationTask hpacSimTask = new HpacSimulationTask(_hpacController, activityData, assetInfo);

            hpacSimTask.StatusUpdate += (s, e) => UpdateStatus(e.StatusMessage);

            try
            {
                hpacSimTask.Execute();
            }
            catch (EmptyQueueException ex)
            {
                return(new PluginExecutionResult(PluginResult.Skipped, ex));
            }
            catch (PullPrintingSimulationException ex)
            {
                return(new PluginExecutionResult(PluginResult.Error, ex));
            }

            return(new PluginExecutionResult(PluginResult.Passed));
        }