/// <summary> /// Converts a given <see cref="T:XElement"/> into a <see cref="T:Transaction"/>. /// </summary> /// <param name="element">The <see cref="T:XElement"/> to convert.</param> /// <param name="workbook">The <see cref="T:Workbook"/> to use to fetch additional information for the <see cref="Transaction"/>.</param> /// <returns>The newly created <see cref="T:Transaction"/>.</returns> public Transaction FromXElement(XElement element, Workbook workbook) { Transaction transaction = new Transaction(); foreach (XElement childNode in element.Nodes()) { switch (childNode.Name.LocalName) { case "DebitAccountID": transaction.DebitAccount = workbook.FetchAccount(new Guid(childNode.Value)); break; case "CreditAccountID": transaction.CreditAccount = workbook.FetchAccount(new Guid(childNode.Value)); break; case "CreatedByUsername": transaction.CreatedByUsername = childNode.Value; break; case "CreatedDate": transaction.CreatedDate = DateTime.Parse(childNode.Value); break; case "Date": transaction.Date = DateTime.Parse(childNode.Value); break; case "Particulars": transaction.Particulars = childNode.Value; break; case "TransactionID": transaction.TransactionID = new Guid(childNode.Value); break; case "Value": transaction.Value = decimal.Parse(childNode.Value); break; case "UpdatedByUsername": transaction.UpdatedByUsername = childNode.Value; break; case "UpdatedDate": transaction.UpdatedDate = DateTime.Parse(childNode.Value); break; case "ChangeSetHistory": ChangeSetHistoryXElementAdapter adapter = new ChangeSetHistoryXElementAdapter(); transaction.ChangeSetHistory = adapter.FromXElement(childNode); break; } } return transaction; }