Files
DP44/Common/DTS.Common.ISO/TestEngineerDetails.cs
2026-04-17 14:55:32 -04:00

264 lines
9.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using DTS.Common.Storage;
using DTS.Common.Utilities.Logging;
using ISO.Strings;
using DTS.Common.Classes.TestEngineerDetails;
using DTS.Common.Interface.TestMetaData;
namespace DTS.Common.ISO
{
[Serializable()]
public class TestEngineerDetails : TestEngineerDetailsDbRecord //: ISerializableFile
{
private enum Fields
{
Name,
TestEngineerName,
TestEngineerPhone,
TestEngineerFax,
TestEngineerEmail,
LocalOnly,
LastModified,
LastModifiedBy,
Version
}
public static TestEngineerDetails ReadXML(System.Xml.XmlElement root)
{
var t = new TestEngineerDetails();
foreach (var node in root.ChildNodes)
{
if (node is System.Xml.XmlElement)
{
ProcessXMLElement(node as System.Xml.XmlElement, ref t);
}
}
return t;
}
private static void ProcessXMLElement(System.Xml.XmlElement node, ref TestEngineerDetails t)
{
if (!Enum.TryParse(node.Name, out Fields field)) return;
switch (field)
{
case Fields.TestEngineerEmail: t.TestEngineerEmail = node.InnerText; break;
case Fields.TestEngineerFax: t.TestEngineerFax = node.InnerText; break;
case Fields.TestEngineerName: t.TestEngineerName = node.InnerText; break;
case Fields.TestEngineerPhone: t.TestEngineerPhone = node.InnerText; break;
case Fields.LastModified: t.LastModified = DateTime.Parse(node.InnerText, System.Globalization.CultureInfo.InvariantCulture); break;
case Fields.LastModifiedBy: t.LastModifiedBy = node.InnerText; break;
case Fields.LocalOnly: t.LocalOnly = bool.Parse(node.InnerText); break;
case Fields.Name: t.Name = node.InnerText; break;
case Fields.Version: t.Version = int.Parse(node.InnerText, System.Globalization.CultureInfo.InvariantCulture); break;
default: throw new NotSupportedException("ISODll.TestEngineerDetails::ProcessXMLElement unsupported field: " + field);
}
}
public void WriteXML(ref System.Xml.XmlWriter writer)
{
writer.WriteStartElement("TestEngineerDetail");
var fields = Enum.GetValues(typeof(Fields)).Cast<Fields>().ToArray();
foreach (var field in fields)
{
writer.WriteStartElement(field.ToString());
switch (field)
{
case Fields.TestEngineerEmail: writer.WriteString(TestEngineerEmail); break;
case Fields.TestEngineerFax: writer.WriteString(TestEngineerFax); break;
case Fields.TestEngineerName: writer.WriteString(TestEngineerName); break;
case Fields.TestEngineerPhone: writer.WriteString(TestEngineerPhone); break;
case Fields.LastModified: writer.WriteString(LastModified.ToString(System.Globalization.CultureInfo.InvariantCulture)); break;
case Fields.LastModifiedBy: writer.WriteString(LastModifiedBy); break;
case Fields.LocalOnly: writer.WriteString(LocalOnly.ToString()); break;
case Fields.Name: writer.WriteString(Name); break;
case Fields.Version: writer.WriteString(Version.ToString(System.Globalization.CultureInfo.InvariantCulture)); break;
default: throw new NotSupportedException("TestEngineerDetails::WriteXML unsupported field " + field);
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
public new string TestEngineerName
{
get => base.TestEngineerName;
set
{
if (value != string.Empty)
{
base.TestEngineerName = value;
}
}
}
public new string TestEngineerPhone
{
get => base.TestEngineerPhone;
set
{
if (value != string.Empty)
{
base.TestEngineerPhone = value;
}
}
}
public new string TestEngineerFax
{
get => base.TestEngineerFax;
set
{
if (value != string.Empty)
{
base.TestEngineerFax = value;
}
}
}
public new string TestEngineerEmail
{
get => base.TestEngineerEmail;
set
{
if (value != string.Empty)
{
base.TestEngineerEmail = value;
}
}
}
public TestEngineerDetails()
{
}
public TestEngineerDetails(TestEngineerDetails copy)
{
Name = copy.Name;
TestEngineerName = copy.TestEngineerName;
TestEngineerPhone = copy.TestEngineerPhone;
TestEngineerFax = copy.TestEngineerFax;
TestEngineerEmail = copy.TestEngineerEmail;
LocalOnly = copy.LocalOnly;
LastModified = copy.LastModified;
LastModifiedBy = copy.LastModifiedBy;
Version = copy.Version;
}
public TestEngineerDetails(ITestEngineerDetailsDbRecord testEngineerDetailsDbRecord)
: base(testEngineerDetailsDbRecord)
{
}
public static TestEngineerDetails GetTestEngineerDetails(string name)
{
try
{
var errorNumber = DbOperations.TestEngineerDetailsGet(name, out ITestEngineerDetailsDbRecord[] testEngineerDetailsDbRecords);
if (errorNumber == 0)
{
return new TestEngineerDetails(testEngineerDetailsDbRecords[0]);
}
}
catch (Exception ex) { APILogger.Log("failed to get test engineer details", name, ex); }
return null;
}
public static void DeleteAllTestEngineerDetails()
{
try
{
var errorNumber = DbOperations.TestEngineerDetailsDelete(null, out string errorMessage);
if (errorNumber != 0)
{
APILogger.Log("Failed to delete test engineer details", errorMessage);
}
}
catch (Exception ex) { APILogger.Log("Failed to delete test engineer details", ex); }
}
public static TestEngineerDetails[] GetAllTestEngineerDetails()
{
var list = new List<TestEngineerDetails>();
try
{
var errorNumber = DbOperations.TestEngineerDetailsGet(null, out ITestEngineerDetailsDbRecord[] testEngineerDetailsDbRecords);
if (errorNumber == 0)
{
foreach (var testEngineerDetailsDbRecord in testEngineerDetailsDbRecords)
{
try
{
var ted = new TestEngineerDetails(testEngineerDetailsDbRecord);
if (!ted.IsInvalidBlank())
{
list.Add(ted);
}
}
catch (Exception ex)
{
APILogger.Log("failed to get test engineer details", ex);
}
}
}
}
catch (Exception ex) { APILogger.Log("Failed to retrieve test engineer details", ex); }
return list.ToArray();
}
private void Update(string user)
{
try
{
var testEngineerDetailsDbRecord = new TestEngineerDetailsDbRecord(this);
testEngineerDetailsDbRecord.LastModified = DateTime.Now;
testEngineerDetailsDbRecord.LastModifiedBy = user;
var errorNumber = DbOperations.TestEngineerDetailsUpdateInsert(testEngineerDetailsDbRecord, out string errorMessage);
if (errorNumber != 0)
{
APILogger.Log("Failed to update test engineer details", TestEngineerName, errorMessage);
}
}
catch (Exception ex)
{
APILogger.Log("Failed to update test engineer details", TestEngineerName, ex);
throw; //TODO: handle exception properly
}
}
public void Commit(string user)
{
try
{
if (IsInvalidBlank())
{
throw new NullReferenceException(StringResources.TestEngineerDetails_NullReferenceName);
}
Update(user);
}
catch (Exception ex)
{
APILogger.Log(StringResources.TestEngineerDetails_FailedToCommit, Name, ex);
throw ex;
}
}
public void Delete(string user)
{
try
{
var errorNumber = DbOperations.CustomerDetailsDelete(Name, out string errorMessage);
if (errorNumber != 0)
{
APILogger.Log("Failed to delete test engineer details", errorMessage);
}
}
catch (Exception ex) { APILogger.Log("Failed to update test engineer details", Name, ex); throw; }
}
}
}