187 lines
7.4 KiB
C#
187 lines
7.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace DatabaseImport.ISO
|
|
{
|
|
[Serializable]
|
|
public class CustomerDetails //: ISerializableFile
|
|
{
|
|
// #region properties
|
|
public string CustomerName { get; set; } = string.Empty;
|
|
public string CustomerTestRefNumber { get; set; } = string.Empty;
|
|
|
|
private string _projectRefNumber = "NOVALUE";
|
|
public string ProjectRefNumber
|
|
{
|
|
get => _projectRefNumber;
|
|
set
|
|
{
|
|
if (value != string.Empty)
|
|
{
|
|
_projectRefNumber = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
private string _customerOrderNumber = "NOVALUE";
|
|
public string CustomerOrderNumber
|
|
{
|
|
get => _customerOrderNumber;
|
|
set
|
|
{
|
|
if (value != string.Empty)
|
|
{
|
|
_customerOrderNumber = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
private string _customerCostUnit = "NOVALUE";
|
|
public string CustomerCostUnit
|
|
{
|
|
get => _customerCostUnit;
|
|
set
|
|
{
|
|
if (value != string.Empty)
|
|
{
|
|
_customerCostUnit = value;
|
|
}
|
|
}
|
|
}
|
|
public bool LocalOnly { get; set; } = false;
|
|
public string Name { get; set; } = "";
|
|
public DateTime LastModified { get; set; }
|
|
public string LastModifiedBy { get; set; }
|
|
public int Version { get; set; } = 1;
|
|
|
|
// #endregion properties
|
|
// #region constructor
|
|
public CustomerDetails()
|
|
{
|
|
}
|
|
|
|
// public CustomerDetails(string name, bool localOnly) { Name = name; LocalOnly = localOnly; }
|
|
|
|
public CustomerDetails(DataRow dr)
|
|
{
|
|
Name = (string)dr["Name"];
|
|
CustomerName = (string)dr["CustomerName"];
|
|
CustomerTestRefNumber = (string)dr["CustomerTestRefNumber"];
|
|
ProjectRefNumber = (string)dr["ProjectRefNumber"];
|
|
CustomerOrderNumber = (string)dr["CustomerOrderNumber"];
|
|
CustomerCostUnit = (string)dr["CustomerCostUnit"];
|
|
LocalOnly = Convert.ToBoolean(dr["LocalOnly"]);
|
|
LastModified = Convert.ToDateTime(dr["LastModified"]);
|
|
LastModifiedBy = (string)dr["LastModifiedBy"];
|
|
Version = Convert.ToInt32(dr["Version"]);
|
|
}
|
|
public CustomerDetails(CustomerDetails copy)
|
|
{
|
|
Name = copy.Name;
|
|
CustomerName = copy.CustomerName;
|
|
CustomerTestRefNumber = copy.CustomerTestRefNumber;
|
|
ProjectRefNumber = copy.ProjectRefNumber;
|
|
CustomerOrderNumber = copy.CustomerOrderNumber;
|
|
CustomerCostUnit = copy.CustomerCostUnit;
|
|
LocalOnly = copy.LocalOnly;
|
|
LastModified = copy.LastModified;
|
|
LastModifiedBy = copy.LastModifiedBy;
|
|
Version = copy.Version;
|
|
}
|
|
// #endregion constructor
|
|
private enum Fields
|
|
{
|
|
Name,
|
|
CustomerName,
|
|
CustomerTestRefNumber,
|
|
ProjectRefNumber,
|
|
CustomerOrderNumber,
|
|
CustomerCostUnit,
|
|
LocalOnly,
|
|
LastModified,
|
|
LastModifiedBy,
|
|
Version
|
|
}
|
|
public static CustomerDetails ReadXML(System.Xml.XmlElement root)
|
|
{
|
|
var c = new CustomerDetails();
|
|
|
|
foreach (var node in root.ChildNodes)
|
|
{
|
|
if (node is System.Xml.XmlElement)
|
|
{
|
|
ProcessXMLElement(node as System.Xml.XmlElement, ref c);
|
|
}
|
|
}
|
|
return c;
|
|
}
|
|
private static void ProcessXMLElement(System.Xml.XmlElement node, ref CustomerDetails c)
|
|
{
|
|
if (!Enum.TryParse(node.Name, out Fields field)) return;
|
|
switch (field)
|
|
{
|
|
case Fields.CustomerCostUnit: c.CustomerCostUnit = node.InnerText; break;
|
|
case Fields.CustomerName: c.CustomerName = node.InnerText; break;
|
|
case Fields.CustomerOrderNumber: c.CustomerOrderNumber = node.InnerText; break;
|
|
case Fields.CustomerTestRefNumber: c.CustomerTestRefNumber = node.InnerText; break;
|
|
case Fields.LastModified: c.LastModified = DateTime.Parse(node.InnerText, System.Globalization.CultureInfo.InvariantCulture); break;
|
|
case Fields.LastModifiedBy: c.LastModifiedBy = node.InnerText; break;
|
|
case Fields.LocalOnly: c.LocalOnly = bool.Parse(node.InnerText); break;
|
|
case Fields.Name: c.Name = node.InnerText; break;
|
|
case Fields.ProjectRefNumber: c.ProjectRefNumber = node.InnerText; break;
|
|
case Fields.Version: c.Version = int.Parse(node.InnerText, System.Globalization.CultureInfo.InvariantCulture); break;
|
|
default: throw new NotSupportedException("ISODll.CustomerDetails::ProcessXMLElement unsupported field: " + field.ToString());
|
|
}
|
|
}
|
|
public void WriteXML(ref System.Xml.XmlWriter writer)
|
|
{
|
|
writer.WriteStartElement("CustomerDetail");
|
|
|
|
var fields = Enum.GetValues(typeof(Fields)).Cast<Fields>().ToArray();
|
|
|
|
foreach (var field in fields)
|
|
{
|
|
writer.WriteStartElement(field.ToString());
|
|
|
|
switch (field)
|
|
{
|
|
case Fields.CustomerCostUnit: writer.WriteString(CustomerCostUnit); break;
|
|
case Fields.CustomerName: writer.WriteString(CustomerName); break;
|
|
case Fields.CustomerOrderNumber: writer.WriteString(CustomerOrderNumber); break;
|
|
case Fields.CustomerTestRefNumber: writer.WriteString(CustomerTestRefNumber); 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.ProjectRefNumber: writer.WriteString(ProjectRefNumber); break;
|
|
case Fields.Version: writer.WriteString(Version.ToString(System.Globalization.CultureInfo.InvariantCulture)); break;
|
|
default: throw new NotSupportedException("CustomerDetails::WriteXML unsupported field " + field.ToString());
|
|
}
|
|
|
|
writer.WriteEndElement();
|
|
}
|
|
|
|
writer.WriteEndElement();
|
|
}
|
|
|
|
public static void DeleteCustomerDetails(string name = null)
|
|
{
|
|
try
|
|
{
|
|
var errorNumber = DTS.Common.Storage.DbOperations.CustomerDetailsDelete(name, out string errorMessage);
|
|
|
|
if (errorNumber != 0)
|
|
{
|
|
//APILogger.Log("Failed to delete customer details", errorMessage);
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//APILogger.Log("Failed to delete customer details", ex);
|
|
}
|
|
}
|
|
}
|
|
}
|