Example #1
0
        /// <summary>
        /// Converts the PrintJobStatus bit fields to a display string.
        /// </summary>
        internal static string ToString(PrintJobStatus printJobStatus)
        {
            StringBuilder statusString = new StringBuilder();

            // Iterate through each of the PrintJobStatus bits that are set and convert it to a display string.
            foreach (var printJobStatusDisplayName in printJobStatusDisplayNames)
            {
                if ((printJobStatusDisplayName.Key & printJobStatus) != 0)
                {
                    statusString.Append(printJobStatusDisplayName.Value);
                }
            }

            int stringlen = statusString.Length;

            if (stringlen > 0)
            {
                // Trim the trailing comma from the string.
                return(statusString.ToString(0, stringlen - 1));
            }
            else
            {
                // If no print job status field was set, display "Not available".
                return("Not available");
            }
        }
Example #2
0
        /// ManagementBaseObject
        #region ManagementBaseObject

        /// <summary>
        /// Gets print job status from the specified management object
        /// </summary>
        /// <param name="printJob">print job</param>
        /// <returns>print job status</returns>
        public static PrintJobStatus JobStatus(this ManagementBaseObject printJob)
        {
            if (printJob == null)
            {
                return(new PrintJobStatus(PrintJobStatusEnum.None, null));
            }

            string JobStatusString;

            if (printJob.Properties["JobStatus"] == null)
            {
                return(new PrintJobStatus(PrintJobStatusEnum.None, null));
            }

            if (printJob.Properties["JobStatus"].Value == null)
            {
                return(new PrintJobStatus(PrintJobStatusEnum.None, null));
            }

            PrintJobStatus JobStatus = new PrintJobStatus(PrintJobStatusEnum.None, null);

            JobStatusString = printJob.Properties["JobStatus"].Value.ToString();
            if (!string.IsNullOrWhiteSpace(JobStatusString))
            {
                //LogHelper.LogDebug(JobStatusString);
                if (JobStatusString.Contains("Spooling"))
                {
                    JobStatus.JobStatus |= PrintJobStatusEnum.Spooling;
                }
                if (JobStatusString.Contains("Printing"))
                {
                    JobStatus.JobStatus |= PrintJobStatusEnum.Printing;
                }
                if (JobStatusString.Contains("Paused"))
                {
                    JobStatus.JobStatus |= PrintJobStatusEnum.Paused;
                }
                if (JobStatusString.Contains("Deleting"))
                {
                    JobStatus.JobStatus |= PrintJobStatusEnum.Deleting;
                }
                if (JobStatusString.Contains("Error"))
                {
                    JobStatus.JobStatus |= PrintJobStatusEnum.Error;
                }
            }
            else
            {
                JobStatus.JobStatus = PrintJobStatusEnum.None;
            }

            JobStatus.JobStatusString = JobStatusString;

            return(JobStatus);
        }
Example #3
0
 public PrintJobStatusResponse(String printRequestId, String status)
 {
     this.printRequestId = printRequestId;
     try
     {
         this.status = (PrintJobStatus)Enum.Parse(typeof(PrintJobStatus), status);
     }
     catch (ArgumentException)
     {
         Console.WriteLine("{0} is not a member of the PrintJobStatus enumeration.", status);
         this.status = PrintJobStatus.UNKNOWN;
     }
 }
 public IHttpActionResult ChangeState(string userName, string fileName, PrintJobStatus status)
 {
     try
     {
         if (userName == null || userName.Length == 0 || fileName == null || fileName.Length == 0)
         {
             return(BadRequest("Incorrect username or filename provided"));
         }
         PrintJob printJob = db.PrintJobs.Where(p => p.UserName == userName && p.FileName == fileName).FirstOrDefault();
         if (printJob == null)
         {
             return(BadRequest("Incorrect username or filename provided. No corresponding printjob exists."));
         }
         if (status == PrintJobStatus.Printed)
         {
             return(BadRequest("Invalid operation. Cannot set status to printed manually"));
         }
         if (printJob.Status == PrintJobStatus.Printed && status == PrintJobStatus.Pending)
         {
             return(BadRequest("The status cannot be changed directly from printed to pending"));
         }
         printJob.Status = status;
         db.SaveChanges();
         return(Ok());
     }
     catch (Exception e)
     {
         string sSource;
         string sLog;
         sSource = "Smart Printer Service";
         sLog    = "Application";
         if (!EventLog.SourceExists(sSource))
         {
             EventLog.CreateEventSource(sSource, sLog);
         }
         string errorMessage = e.Message + "\n\n";
         while (e.InnerException != null)
         {
             errorMessage += e.InnerException + "\n";
             e             = e.InnerException;
         }
         EventLog.WriteEntry(sSource, errorMessage, EventLogEntryType.Error);
         return(InternalServerError());
     }
 }
Example #5
0
        /// <summary>
        /// Converts the PrintJobStatus bit fields to a display string.
        /// </summary>
        internal static string ToString(PrintJobStatus printJobStatus)
        {
            StringBuilder statusString = new StringBuilder();

            // Iterate through each of the PrintJobStatus bits that are set and convert it to a display string.
            foreach (var printJobStatusDisplayName in printJobStatusDisplayNames)
            {
                if ((printJobStatusDisplayName.Key & printJobStatus) != 0)
                {
                    statusString.Append(printJobStatusDisplayName.Value);
                }
            }

            int stringlen = statusString.Length;
            if (stringlen > 0)
            {
                // Trim the trailing comma from the string.
                return statusString.ToString(0, stringlen - 1);
            }
            else
            {
                // If no print job status field was set, display "Not available".
                return "Not available";
            }
        }
Example #6
0
        private void DoPrint()
        {
            try
            {
                Status = PrintJobStatus.Printing;
                OnStatusUpdate("Printing Started");

                var printerSettings = new PrinterSettings
                {
                    PrinterName = "Microsoft XPS Document Writer",
                    PrintToFile = true,
                    PrintFileName = string.Format("{0}\\{1}.xps", FullPrintJobFolder, SOPInstanceUID.UID)
                };

                _printDocument = new PrintDocument
                {
                    PrinterSettings = printerSettings,
                    DocumentName = Thread.CurrentThread.Name,
                    //PrintController = new StandardPrintController()
                };

                _printDocument.PrinterSettings.Collate = true;
                _printDocument.PrinterSettings.Copies = (short)Session.NumberOfCopies;
                _printDocument.QueryPageSettings += OnQueryPageSettings;
                _printDocument.PrintPage += OnPrintPage;

                PreviewProc();

                // I would use some kind of if statement below in a production environment and flow a variable
                //throught to the sever to triger it "_preview"
                //if (_preview)
                //    PreviewProc(printDocument);
                //else
                //    printDocument.Print();

                Status = PrintJobStatus.Done;

                OnStatusUpdate("Printing Done");
            }
            catch
            {
                Status = PrintJobStatus.Failure;
                OnStatusUpdate("Printing failed");
            }
            finally
            {
                if (_printDocument != null)
                {
                    //dispose the print document and unregister events handlers to avoid memory leaks
                    _printDocument.QueryPageSettings -= OnQueryPageSettings;
                    _printDocument.PrintPage -= OnPrintPage;
                    _printDocument.Dispose();
                }
            }
        }
Example #7
0
        public void Print(List<FilmBox> filmBoxList,Boolean save = false, Boolean preview = false)
        {
            _preview = preview;
            FilmBoxList = filmBoxList;
            try
            {
                Status = PrintJobStatus.Pending;

                OnStatusUpdate("Preparing films for printing");

                var printJobDir = new System.IO.DirectoryInfo(FullPrintJobFolder);
                if (!printJobDir.Exists)
                {
                    printJobDir.Create();
                }

                if (save)
                {
                    int filmsCount = FilmBoxFolderList.Count;
                    for (int i = 0; i < filmBoxList.Count; i++)
                    {
                        var filmBox = filmBoxList[i];
                        var filmBoxDir = printJobDir.CreateSubdirectory(string.Format("F{0:000000}", i + 1 + filmsCount));

                        var file = new DicomFile(filmBox.FilmSession);
                        file.Save(string.Format(@"{0}\FilmSession.dcm", filmBoxDir.FullName));

                        FilmBoxFolderList.Add(filmBoxDir.Name);
                        filmBox.Save(filmBoxDir.FullName);
                    }
                }

                var thread = new Thread(DoPrint)
                {
                    Name = string.Format("PrintJob {0}", SOPInstanceUID.UID),
                    IsBackground = true
                };
                thread.Start();
            }
            catch (Exception ex)
            {
                Error = ex;
                Status = PrintJobStatus.Failure;
                OnStatusUpdate("Print failed");
                DeletePrintFolder();
            }
        }