Пример #1
0
        private static void Subscriber(JobMeta job)
        {
            _logger.Verbose("job is here: " + job.DocumentName);
            if (CanContinueWithJob(job) == false)
            {
                return;
            }

            _jobs.Add(job.Guid);
            WriteLogs(job);
            CanchelIfNotValidJob(job);

            if (_client == null)
            {
                LaunchAuthGui().Wait();
                _client = Auth.GetClient();
            }
            //ToDo убрать то, что ниже
            _client.Balance = 0;

            var usrBalanceAllowPrinting = ClientValidator.CanContinuePrinting(_client, job);

            WriteLogsAboutJobAndClient(job, _client, usrBalanceAllowPrinting);
            if (!usrBalanceAllowPrinting)
            {
                _logger.Information("Job will be canceled");
                job._job.Cancel();
                return;
            }

            RunPrintJob(job);
            _jobs.Remove(job.Guid);
            //RemoveJobIfPaused(job, isPaused);
        }
Пример #2
0
        private static void Subscriber(JobMeta job)
        {
            var isPaused            = job._job.IsSpooling == false && job._job.IsPaused == true;
            var alreadyProcessedJob = _jobs.Contains(job.Guid) == true;

            if (isPaused && !alreadyProcessedJob)
            {
                _jobs.Add(job.Guid); //ToDo одно задание сюда попадает множество раз. Для предотвращения кроме имени документа нужно генерировать уникальный хэш
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine($"Process aborted: {job._job.JobStatus}");
                Console.ForegroundColor = ConsoleColor.White;
                return;
            }

            WriteLogs(job);

            var jobIsValid = _validator.ApplyChecks(job);

            if (jobIsValid == false)
            {
                job.CancelJob();
            }

            Client client       = Auth.GetClient();
            var    canBePrinted = ClientValidator.CanContinuePrinting(client, job);

            if (canBePrinted)
            {
                RunPrintJob(job._job);
            }
            else
            {
                job._job.Cancel();
            }

            WriteLogsAboutJobAndClient(job, client, canBePrinted);

            // RemoveJobIfPaused(job, isPaused);
        }