179 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Data;
 | 
						|
using System.Data.SqlClient;
 | 
						|
using Csla;
 | 
						|
using Csla.Data;
 | 
						|
using Csla.Validation;
 | 
						|
using System.Diagnostics;
 | 
						|
 | 
						|
namespace VEPROMS.CSLA.Library
 | 
						|
{
 | 
						|
	public partial class Pdf
 | 
						|
	{
 | 
						|
		public static void DeleteAll(int docID)
 | 
						|
		{
 | 
						|
			if (!CanDeleteObject())
 | 
						|
				throw new System.Security.SecurityException("User not authorized to remove a Pdf");
 | 
						|
			try
 | 
						|
			{
 | 
						|
				DataPortal.Delete(new DocIDCriteria(docID));
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				throw new DbCslaException("Error on Pdf.DeleteAll", ex);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		[Serializable()]
 | 
						|
		protected class DocIDCriteria
 | 
						|
		{
 | 
						|
			private int _DocID;
 | 
						|
			public int DocID
 | 
						|
			{ get { return _DocID; } }
 | 
						|
			public DocIDCriteria(int docID)
 | 
						|
			{
 | 
						|
				_DocID = docID;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		[Transactional(TransactionalTypes.TransactionScope)]
 | 
						|
		private void DataPortal_Delete(DocIDCriteria criteria)
 | 
						|
		{
 | 
						|
			if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Pdf.DataPortal_Delete", GetHashCode());
 | 
						|
			try
 | 
						|
			{
 | 
						|
				using (SqlConnection cn = Database.VEPROMS_SqlConnection)
 | 
						|
				{
 | 
						|
					using (SqlCommand cm = cn.CreateCommand())
 | 
						|
					{
 | 
						|
						cm.CommandType = CommandType.StoredProcedure;
 | 
						|
						cm.CommandTimeout = Database.SQLTimeout;
 | 
						|
						cm.CommandText = "deleteAllPdfs";
 | 
						|
						cm.Parameters.AddWithValue("@DocID", criteria.DocID);
 | 
						|
						cm.ExecuteNonQuery();
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				if (_MyLog.IsErrorEnabled) _MyLog.Error("Pdf.DataPortal_Delete", ex);
 | 
						|
				_ErrorMessage = ex.Message;
 | 
						|
				throw new DbCslaException("Pdf.DataPortal_Delete", ex);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		// used to remove word section PDFs to force ROs to be updated when printed or saved
 | 
						|
		public static void DeleteAllDocVersion(int versionID)
 | 
						|
		{
 | 
						|
			if (!CanDeleteObject())
 | 
						|
				throw new System.Security.SecurityException("User not authorized to remove a Pdf");
 | 
						|
			try
 | 
						|
			{
 | 
						|
				DataPortal.Delete(new VersionIDCriteria(versionID));
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				throw new DbCslaException("Error on Pdf.DeleteAllDocVersion", ex);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		[Serializable()]
 | 
						|
		protected class VersionIDCriteria
 | 
						|
		{
 | 
						|
			private int _VersionID;
 | 
						|
			public int VersionID
 | 
						|
			{ get { return _VersionID; } }
 | 
						|
			public VersionIDCriteria(int versionID)
 | 
						|
			{
 | 
						|
				_VersionID = versionID;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		[Transactional(TransactionalTypes.TransactionScope)]
 | 
						|
		private void DataPortal_Delete(VersionIDCriteria criteria)
 | 
						|
		{
 | 
						|
			if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Pdf.DataPortal_Delete", GetHashCode());
 | 
						|
			try
 | 
						|
			{
 | 
						|
				using (SqlConnection cn = Database.VEPROMS_SqlConnection)
 | 
						|
				{
 | 
						|
					using (SqlCommand cm = cn.CreateCommand())
 | 
						|
					{
 | 
						|
						cm.CommandType = CommandType.StoredProcedure;
 | 
						|
						cm.CommandTimeout = Database.SQLTimeout;
 | 
						|
						cm.CommandText = "deleteAllDocVersionPdfs";
 | 
						|
						cm.Parameters.AddWithValue("@VersionID", criteria.VersionID);
 | 
						|
						cm.ExecuteNonQuery();
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				if (_MyLog.IsErrorEnabled) _MyLog.Error("Pdf.DataPortal_Delete", ex);
 | 
						|
				_ErrorMessage = ex.Message;
 | 
						|
				throw new DbCslaException("Pdf.DataPortal_Delete", ex);
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
	}
 | 
						|
	public partial class PdfInfo
 | 
						|
	{
 | 
						|
		// B2023-024 PROMS was using old cached PDF data when printing Word sections.
 | 
						|
		//           Added this method that can be called to clear the PDF print cache for a specified section.
 | 
						|
		public static void RemovePDFFromCache(ItemInfo sect)
 | 
						|
		{
 | 
						|
			if (sect.MyContent.MyEntry == null) return; // B2023-030 not a word section so just jump out
 | 
						|
			DocStyle myDocStyle = sect.ActiveSection.MyDocStyle;
 | 
						|
			SectionConfig sc = sect.ActiveSection.MyConfig as SectionConfig;
 | 
						|
 | 
						|
			int ss = sect.MyDocVersion.DocVersionConfig.SelectedSlave;
 | 
						|
 | 
						|
			if (sc != null && sc.Section_WordMargin == "Y")
 | 
						|
			{
 | 
						|
				RemoveFromCachedByPrimaryKey(sect.MyContent.MyEntry.DocID, ss * 10 + MSWordToPDF.DebugStatus, 0, 0, 0, 0);
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				RemoveFromCachedByPrimaryKey(sect.MyContent.MyEntry.DocID, ss * 10 + MSWordToPDF.DebugStatus, (int)myDocStyle.Layout.TopMargin,
 | 
						|
					(int)myDocStyle.Layout.PageLength, (int)myDocStyle.Layout.LeftMargin, (int)myDocStyle.Layout.PageWidth);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		public static PdfInfo Get(ItemInfo sect, bool ovrride)
 | 
						|
		{
 | 
						|
			int count = 0;
 | 
						|
 | 
						|
			while (count < 2)
 | 
						|
			{
 | 
						|
				DocStyle myDocStyle = sect.ActiveSection.MyDocStyle;
 | 
						|
				SectionConfig sc = sect.ActiveSection.MyConfig as SectionConfig;
 | 
						|
				PdfInfo myPdf = null;
 | 
						|
 | 
						|
				int ss = sect.MyDocVersion.DocVersionConfig.SelectedSlave;
 | 
						|
 | 
						|
				if (sc != null && sc.Section_WordMargin == "Y")
 | 
						|
				{
 | 
						|
					myPdf = Get(sect.MyContent.MyEntry.DocID, ss*10 + MSWordToPDF.DebugStatus, 0, 0, 0, 0);
 | 
						|
				}
 | 
						|
				else
 | 
						|
				{
 | 
						|
					myPdf = Get(sect.MyContent.MyEntry.DocID, ss*10 + MSWordToPDF.DebugStatus, (int)myDocStyle.Layout.TopMargin, (int)myDocStyle.Layout.PageLength,
 | 
						|
						(int)myDocStyle.Layout.LeftMargin, (int)myDocStyle.Layout.PageWidth);
 | 
						|
				}
 | 
						|
 | 
						|
				// override forces the printing of the word section, which creates a word file with resolved ROs, which is saved for an approved export
 | 
						|
				if (!ovrride || (ovrride && count == 1))
 | 
						|
				{
 | 
						|
					if (myPdf != null) return myPdf;
 | 
						|
					if (count > 0) return null; // Could not find or create a pdf
 | 
						|
				}
 | 
						|
 | 
						|
				MSWordToPDF.SetDocPdf(sect.MyContent.MyEntry.MyDocument, sect);
 | 
						|
 | 
						|
				count++;
 | 
						|
			}
 | 
						|
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	public partial class PdfInfoList
 | 
						|
	{
 | 
						|
	}
 | 
						|
}
 |