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