diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs index bafb1b10..6b529f23 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs @@ -881,7 +881,26 @@ namespace VEPROMS.CSLA.Library throw new DbCslaException("ROFstInfo.DataPortal_Fetch", ex); } } - + public ROImageInfo GetROImageByFilename(string filename) + { + ROImageInfoList images = ROImageInfoList.GetByRODbIDFilename(RODbID, filename); + if (images == null || images.Count == 0) + { + _MyLog.WarnFormat("\r\nReferenced Object Image {0} Missing\r\nNeed to Update RO Values",filename); + return null; + } + ROImageInfo retval = null; + foreach (ROImageInfo image in images) + { + if (image.DTS > DTS && retval != null) break; + retval = image; + } + if(retval.DTS > DTS) + _MyLog.WarnFormat("\r\nReferenced Object Image {0} newer {1} than RO.FST {2}\r\nNeed to Update RO Values",filename,retval.DTS.ToShortDateString(),DTS.ToShortDateString()); + else + _MyLog.WarnFormat("Referenced Object Image {0} older {1} then RO.FST {2}\r\nNeed to Update RO Values",filename,retval.DTS.ToShortDateString(),DTS.ToShortDateString()); + return retval; + } } public class ROFstInfoROTableUpdateEventArgs { diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs index 0f0455c0..e946039b 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ROImageExt.cs @@ -443,5 +443,70 @@ namespace VEPROMS.CSLA.Library } this.RaiseListChangedEvents = true; } + public static ROImageInfoList GetByRODbIDFilename(int rODbID,string filename) + { + try + { + ROImageInfoList tmp = DataPortal.Fetch(new RODbIDFilenameCriteria(rODbID,filename)); + //ROImageInfo.AddList(tmp); + tmp.AddEvents(); + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on ROImageInfoList.GetByRODbIDFilename", ex); + } + } + private class RODbIDFilenameCriteria + { + public RODbIDFilenameCriteria(int rODbID,string filename) + { + _RODbID = rODbID; + _Filename = filename; + } + private int _RODbID; + public int RODbID + { + get { return _RODbID; } + set { _RODbID = value; } + } + private string _Filename; + public string Filename + { + get { return _Filename; } + set { _Filename = value; } + } + } + private void DataPortal_Fetch(RODbIDFilenameCriteria criteria) + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ROImageInfoList.DataPortal_FetchRODbIDFilename", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getROImagesByRODbID_Filename"; + cm.Parameters.AddWithValue("@RODbID", criteria.RODbID); + cm.Parameters.AddWithValue("@FileName", criteria.Filename); + cm.CommandTimeout = Database.DefaultTimeout; + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + IsReadOnly = false; + while (dr.Read()) this.Add(new ROImageInfo(dr)); + IsReadOnly = true; + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("ROImageInfoList.DataPortal_FetchRODbIDFilename", ex); + throw new DbCslaException("ROImageInfoList.DataPortal_FetchRODbIDFilename", ex); + } + this.RaiseListChangedEvents = true; + } } } diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index 88fb82ce..8c17324d 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -971,6 +971,7 @@ namespace Volian.Print.Library DocVersionInfo dvi = proc.ActiveParent as DocVersionInfo; ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst; ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]); + if (roImage == null) roImage = rofst.GetROImageByFilename(vals[0]);// need code to go and get an ROImaage if it exists if (roImage != null) { ROImageConfig rc = new ROImageConfig(roImage); @@ -2792,7 +2793,13 @@ namespace Volian.Print.Library if (roImage != null) ImageText = val; else - erMsg = string.Format("Image {0} does not exist.", vals[0]); + { + roImage = rofst.GetROImageByFilename(vals[0]);// need code to go and get an ROImaage if it exists + if (roImage == null) + erMsg = string.Format("Image {0} does not exist.", vals[0]); + else + ImageText = val; + } } catch (Exception ex)