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); }
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); }