/// <summary>
        /// Gets the printed file.
        /// </summary>
        /// <param name="userId">User id.</param>
        /// <param name="jobId">Job id.</param>
        /// <returns></returns>
        /// <remarks>
        /// Sequence Diagram:<br/>
        ///     <img src="SequenceDiagrams/SD_PrintReleaseDevice.GetFileData.GetPrintedFile.jpg"/>
        /// </remarks>
        public string ProvidePrintedFile(string userId, string jobId)
        {
            string finalSettingsPath = string.Empty;

            Session["IsSettingChanged"] = null;
            try
            {
                if (Session["NewPrintSettings"] != null)
                {
                    DataTable prinSettings = Session["NewPrintSettings"] as DataTable;

                    Dictionary <string, string> prinSettingsDictionary = new Dictionary <string, string>();

                    string duplexDirection  = "";
                    string driverType       = "";
                    string pagesCount       = "";
                    int    macDefaultCopies = 1;
                    bool   isCollate        = false;
                    for (int settingIndex = 0; settingIndex < prinSettings.Rows.Count; settingIndex++)
                    {
                        if (prinSettings.Rows[settingIndex]["CATEGORY"].ToString() == "PRINTERDRIVER")
                        {
                            prinSettingsDictionary.Add(prinSettings.Rows[settingIndex]["KEY"].ToString(), prinSettings.Rows[settingIndex]["VALUE"].ToString().ToString());
                        }
                        if (prinSettings.Rows[settingIndex]["CATEGORY"].ToString() == "PDLSETTING")
                        {
                            duplexDirection = prinSettings.Rows[settingIndex]["KEY"].ToString();
                        }
                        if (prinSettings.Rows[settingIndex]["KEY"].ToString() == "DriverType")
                        {
                            driverType = prinSettings.Rows[settingIndex]["VALUE"].ToString();
                        }
                        if (prinSettings.Rows[settingIndex]["CATEGORY"].ToString() == "ISCOLLATE")
                        {
                            isCollate = Convert.ToBoolean(prinSettings.Rows[settingIndex]["VALUE"]);
                        }
                        if (prinSettings.Rows[settingIndex]["CATEGORY"].ToString() == "ISPAGESCOUNT")
                        {
                            pagesCount = Convert.ToString(prinSettings.Rows[settingIndex]["VALUE"]);
                        }
                    }

                    jobId = jobId.Replace(".prn", ".config");
                    Session["IsSettingChanged"] = "Yes";
                    finalSettingsPath           = FileServerPrintJobProvider.ProvidePrintReadyFileWithEditableSettings(prinSettingsDictionary, userId, userSource, jobId, duplexDirection, driverType, isCollate, pagesCount, macDefaultCopies, domainName);
                }
                else
                {
                    Session["IsSettingChanged"] = "No";
                    finalSettingsPath           = FileServerPrintJobProvider.ProvidePrintedFile(userId, userSource, jobId, domainName);
                }
            }
            catch (Exception)
            {
                //throw;
            }
            return(finalSettingsPath);
        }
Beispiel #2
0
        private static void InitiateJobRelease(DataRow drPrintJob, string serviceName)
        {
            try
            {
                if (drPrintJob != null)
                {
                    bool isJobReleaseWithSettings = Convert.ToBoolean(drPrintJob["JOB_RELEASE_WITH_SETTINGS"]);
                    bool isJobSettingsChanged     = Convert.ToBoolean(drPrintJob["JOB_RELEASE_WITH_SETTINGS"]);

                    if (isJobReleaseWithSettings == true && isJobSettingsChanged == true)
                    {
                        string      settings    = drPrintJob["JOB_SETTINGS_REQUEST"].ToString();
                        XmlDocument xmlDocument = new XmlDocument();
                        xmlDocument.LoadXml(settings);

                        DataTable dtSettings = (DataTable)Deserialize(xmlDocument.DocumentElement, typeof(DataTable));

                        Dictionary <string, string> prinSettingsDictionary = new Dictionary <string, string>();

                        string userID     = drPrintJob["USER_ID"].ToString();
                        string userSource = drPrintJob["USER_SOURCE"].ToString();
                        string jobID      = drPrintJob["JOB_ID"].ToString();
                        string userDomain = drPrintJob["USER_DOMAIN"].ToString();

                        string duplexDirection  = "";
                        string driverType       = "";
                        string pagesCount       = "";
                        int    macDefaultCopies = 1;
                        bool   isCollate        = false;
                        for (int settingIndex = 0; settingIndex < dtSettings.Rows.Count; settingIndex++)
                        {
                            if (dtSettings.Rows[settingIndex]["CATEGORY"].ToString() == "PRINTERDRIVER")
                            {
                                prinSettingsDictionary.Add(dtSettings.Rows[settingIndex]["KEY"].ToString(), dtSettings.Rows[settingIndex]["VALUE"].ToString());
                            }
                            if (dtSettings.Rows[settingIndex]["CATEGORY"].ToString() == "PDLSETTING")
                            {
                                duplexDirection = dtSettings.Rows[settingIndex]["KEY"].ToString();
                            }
                            if (dtSettings.Rows[settingIndex]["KEY"].ToString() == "DriverType")
                            {
                                driverType = dtSettings.Rows[settingIndex]["VALUE"].ToString();
                            }
                            if (dtSettings.Rows[settingIndex]["KEY"].ToString() == "MacDefaultCopies")
                            {
                                macDefaultCopies = int.Parse(dtSettings.Rows[settingIndex]["VALUE"].ToString());
                            }
                            if (dtSettings.Rows[settingIndex]["CATEGORY"].ToString() == "ISCOLLATE")
                            {
                                isCollate = Convert.ToBoolean(dtSettings.Rows[settingIndex]["VALUE"]);
                            }
                            if (dtSettings.Rows[settingIndex]["CATEGORY"].ToString() == "ISPAGESCOUNT")
                            {
                                pagesCount = Convert.ToString(dtSettings.Rows[settingIndex]["VALUE"]);
                            }
                        }

                        jobID = jobID.Replace(".prn", ".config");

                        var tskPrepareJobFile = Task.Factory.StartNew <string>(() => FileServerPrintJobProvider.ProvidePrintReadyFileWithEditableSettings(prinSettingsDictionary, userID, userSource, jobID, duplexDirection, driverType, isCollate, pagesCount, macDefaultCopies, userDomain));
                        var jobFilePath       = tskPrepareJobFile.Result;

                        //if (!string.IsNullOrEmpty(jobFilePath))
                        {
                            var tskTransferFile = Task.Factory.ContinueWhenAll(new Task[] { tskPrepareJobFile }, (t) => TransferFiletoFTP(serviceName, drPrintJob, jobFilePath));
                        }
                    }
                    else
                    {
                        var tskTransferFile = Task.Factory.StartNew(() => TransferFiletoFTP(serviceName, drPrintJob, null));
                        //TransferFiletoFTP(serviceName, drPrintJob, null);
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.RecordMessage(serviceName, "InitiateJobRelease", LogManager.MessageType.Exception, ex.Message, "Restart the Print Data Provider Service", ex.Message, ex.StackTrace);

                string sqlQuery = "update T_PRINT_JOBS set JOB_PRINT_RELEASED = 'false' where REC_SYSID = '" + drPrintJob["REC_SYSID"].ToString() + "'";
                using (Database database = new Database())
                {
                    database.ExecuteNonQuery(database.GetSqlStringCommand(sqlQuery));
                }
            }
        }