public static TimeScope Load(XmlNode inputNode)
{
var timeStampNode = inputNode.SelectSingleNode("ASP");
if (timeStampNode == null)
return null;
// Required attributes
var startTimeValue = timeStampNode.GetXmlNodeValue("@A");
var typeValue = timeStampNode.GetXmlNodeValue("@D");
if (string.IsNullOrEmpty(startTimeValue) ||
string.IsNullOrEmpty(typeValue))
return null;
var timeStamp1 = ParseDateTime(startTimeValue);
if (timeStamp1 == null)
return null;
var timeStamp2 = ParseDateTime(timeStampNode.GetXmlNodeValue("@B"));
if (timeStamp2 == null)
{
var duration = ParseDuration(timeStampNode.GetXmlNodeValue("@C"));
if (duration.HasValue)
timeStamp2 = timeStamp1.Value.Add(duration.Value);
}
var location = LoadLocation(timeStampNode.SelectSingleNode("PTN"));
return new TimeScope
{
TimeStamp1 = timeStamp1,
TimeStamp2 = timeStamp2,
Location1 = location,
Location2 = location,
DateContext = typeValue == "1" ? DateContextEnum.ProposedStart : DateContextEnum.ActualStart,
Duration = timeStamp1.GetValueOrDefault() - timeStamp2.GetValueOrDefault(),
};
}