C2026-008 - Re-Architect RO.FST to include RO Modification date/time and use those when updating ROs from the RO.FST
This commit is contained in:
@@ -97,7 +97,8 @@ namespace VEPROMS.CSLA.Library
|
||||
public string appid;
|
||||
public int ID;
|
||||
public int ParentID;
|
||||
public rochild[] children;
|
||||
public DateTime? ModDateTime; //C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
public rochild[] children;
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
@@ -110,7 +111,8 @@ namespace VEPROMS.CSLA.Library
|
||||
public string roid; // roid unique identifier
|
||||
public string appid; // accessory page id - user specified unique id
|
||||
public string value; // return value, can be multiple values
|
||||
public rochild[] children;
|
||||
public DateTime? ModDateTime; //C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
public rochild[] children;
|
||||
};
|
||||
|
||||
public class RoExtension
|
||||
@@ -686,15 +688,19 @@ namespace VEPROMS.CSLA.Library
|
||||
//return string.Format("{0,10:#####0.00}", TimeSpan.FromTicks(DateTime.Now.Ticks - dtStart.Ticks).TotalSeconds);
|
||||
}
|
||||
|
||||
#endregion
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//return new ROFstID if there is a newer ID that matches the same ROFSTDB
|
||||
public int GetNewerFSTID() => RofstGetLatestID(RofstID);
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Private Methods
|
||||
#endregion
|
||||
|
||||
#region (Database Calls)
|
||||
#region Private Methods
|
||||
|
||||
private bool RofstDataExists(int rofstID)
|
||||
#region (Database Calls)
|
||||
|
||||
private bool RofstDataExists(int rofstID)
|
||||
{
|
||||
int headerStatusID = RofstDataGetHeaderLoadStatus(rofstID);
|
||||
|
||||
@@ -888,7 +894,7 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
|
||||
private void RofstChildInsert(int rofstID, int id, int parentID, int dbiID, int type, string title, string roid, string appid, string value)
|
||||
private void RofstChildInsert(int rofstID, int id, int parentID, int dbiID, int type, string title, string roid, string appid, string value, DateTime? dt = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -917,7 +923,10 @@ namespace VEPROMS.CSLA.Library
|
||||
if (!string.IsNullOrEmpty(this.RoMissingDefaultValue))
|
||||
cmd.Parameters.Add(new SqlParameter("@missingDefaultValue", SqlDbType.VarChar)).Value = this.RoMissingDefaultValue;
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
if (dt != null)
|
||||
cmd.Parameters.Add(new SqlParameter("@ModDateTime", SqlDbType.DateTime)).Value = dt;
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1299,11 +1308,37 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
//return new ROFstID if there is a newer ID that matches the same ROFSTDB
|
||||
private int RofstGetLatestID(int rofstID)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cmd = cn.CreateCommand())
|
||||
{
|
||||
cmd.CommandTimeout = 0;
|
||||
cmd.CommandType = CommandType.Text;
|
||||
cmd.CommandText = "SELECT ISNULL((SELECT TOP 1 ROFsts.ROFstID FROM ROFsts INNER JOIN ROFsts curFST ON curFST.RODbID = ROFsts.RODbID WHERE curFST.ROFstID = @FSTid order by ROFsts.DTS desc),-1)";
|
||||
|
||||
#region (Core/Base logic for RO Values & UnitInfo RO Values)
|
||||
cmd.Parameters.Add(new SqlParameter("@FSTid", SqlDbType.Int)).Value = rofstID;
|
||||
|
||||
private ROFSTLookup.rochild RofstDataGetChildByRoid(int rofstID, string roid, bool loadChildren = false, bool loadAllChildren = false)
|
||||
return (int) cmd.ExecuteScalar();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new DbCslaException("RofstData.RofstGetLatestID", ex);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region (Core/Base logic for RO Values & UnitInfo RO Values)
|
||||
|
||||
private ROFSTLookup.rochild RofstDataGetChildByRoid(int rofstID, string roid, bool loadChildren = false, bool loadAllChildren = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -1512,10 +1547,10 @@ namespace VEPROMS.CSLA.Library
|
||||
|
||||
int slen = StringLength(ab, myOffset + 6);
|
||||
tmp.title = Encoding.Default.GetString(ab, myOffset + 6, slen);
|
||||
|
||||
|
||||
myOffset += (7 + slen);
|
||||
|
||||
ROFSTLookup.rogrp tmpg = LoadGroup(ab, childOffset, tableID);
|
||||
ROFSTLookup.rogrp tmpg = LoadGroup(ab, childOffset, tableID);
|
||||
|
||||
tmp.ID = tmpg.ID;
|
||||
tmp.ParentID = tmpg.ParentID;
|
||||
@@ -1523,8 +1558,12 @@ namespace VEPROMS.CSLA.Library
|
||||
tmp.appid = tmpg.appid;
|
||||
tmp.roid = tableID.ToString("X4") + tmp.ID.ToString("X8");
|
||||
tmp.children = tmpg.children;
|
||||
if (tmpg.ModDateTime != null)
|
||||
{
|
||||
tmp.ModDateTime = tmpg.ModDateTime;
|
||||
}
|
||||
|
||||
int j;
|
||||
int j;
|
||||
|
||||
for (j = i - 1; j >= 0 && tmp.ID < myGrp.children[j].ID; j--)
|
||||
{
|
||||
@@ -1542,7 +1581,13 @@ namespace VEPROMS.CSLA.Library
|
||||
int slen2 = StringLength(ab, offset + 13 + slen);
|
||||
myGrp.appid = Encoding.Default.GetString(ab, offset + 13 + slen, slen2);
|
||||
|
||||
_dbRoCnt++;
|
||||
//C2026-008 Re-Architect RO.FST to include RO Modification date/time
|
||||
if (myGrp.value != "" && DateTime.TryParseExact(Encoding.Default.GetString(ab, offset + 14 + slen + slen2, 14), "yyyyMMddHHmmss", null, System.Globalization.DateTimeStyles.None, out DateTime dt))
|
||||
{
|
||||
myGrp.ModDateTime = dt;
|
||||
}
|
||||
|
||||
_dbRoCnt++;
|
||||
}
|
||||
|
||||
return myGrp;
|
||||
@@ -1655,7 +1700,7 @@ namespace VEPROMS.CSLA.Library
|
||||
private void LoadChild(int rofstID, int dbiID, ROFSTLookup.rochild child)
|
||||
{
|
||||
//Insert Rofst Child
|
||||
RofstChildInsert(rofstID, child.ID, child.ParentID, dbiID, child.type, child.title, child.roid, child.appid, child.value);
|
||||
RofstChildInsert(rofstID, child.ID, child.ParentID, dbiID, child.type, child.title, child.roid, child.appid, child.value, child.ModDateTime);
|
||||
|
||||
//Increment RO Count if RoChild has a return value
|
||||
if (!string.IsNullOrEmpty(child.value)) _curRoCnt++;
|
||||
|
||||
Reference in New Issue
Block a user