/// <summary> /// Converts a given <see cref="T:XElement"/> into an <see cref="T:Account"/>. /// </summary> /// <param name="element">The <see cref="T:XElement"/> to convert.</param> /// <returns>The newly created <see cref="T:Account"/>.</returns> public Account FromXElement(XElement element) { Account account = AccountFactory.Create(element.Name.LocalName); foreach (XElement childNode in element.Nodes()) { switch (childNode.Name.LocalName) { case "AccountID": account.AccountID = new Guid(childNode.Value); break; case "CreatedByUsername": account.CreatedByUsername = childNode.Value; break; case "CreatedDate": account.CreatedDate = DateTime.Parse(childNode.Value); break; case "Description": account.Description = childNode.Value; break; case "Name": account.Name = childNode.Value; break; case "UpdatedByUsername": account.UpdatedByUsername = childNode.Value; break; case "UpdatedDate": account.UpdatedDate = DateTime.Parse(childNode.Value); break; case "ChangeSetHistory": ChangeSetHistoryXElementAdapter adapter = new ChangeSetHistoryXElementAdapter(); account.ChangeSetHistory = adapter.FromXElement(childNode); break; } } return account; }
/// <summary> /// Converts a given <see cref="Account"/> into an <see cref="T:XElement"/>. /// </summary> /// <param name="account">The <see cref="Account"/> to convert.</param> /// <returns>The newly created <see cref="T:XElement"/>.</returns> public XElement ToXElement(Account account) { XElement element = new XElement(account.AccountType.ToString()); element.Add(new XElement("AccountID", account.AccountID)); element.Add(new XElement("CreatedByUsername", account.CreatedByUsername)); element.Add(new XElement("CreatedDate", account.CreatedDate)); element.Add(new XElement("Description", account.Description)); element.Add(new XElement("Name", account.Name)); element.Add(new XElement("UpdatedByUsername", account.UpdatedByUsername)); element.Add(new XElement("UpdatedDate", account.UpdatedDate)); // Append the change history ChangeSetHistoryXElementAdapter adapter = new ChangeSetHistoryXElementAdapter(); element.Add(adapter.ToXElement(account.ChangeSetHistory)); return element; }
/// <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; }
/// <summary> /// Converts a given <see cref="Transaction"/> into an <see cref="T:XElement"/>. /// </summary> /// <param name="transaction">The <see cref="Transaction"/> to convert.</param> /// <returns>The newly created <see cref="T:XElement"/>.</returns> public XElement ToXElement(Transaction transaction) { XElement element = new XElement("Transaction"); element.Add(new XElement("DebitAccountID", transaction.DebitAccount.AccountID)); element.Add(new XElement("CreditAccountID", transaction.CreditAccount.AccountID)); element.Add(new XElement("CreatedByUsername", transaction.CreatedByUsername)); element.Add(new XElement("CreatedDate", transaction.CreatedDate)); element.Add(new XElement("Date", transaction.Date)); element.Add(new XElement("Particulars", transaction.Particulars)); element.Add(new XElement("TransactionID", transaction.TransactionID)); element.Add(new XElement("Value", transaction.Value)); element.Add(new XElement("UpdatedByUsername", transaction.UpdatedByUsername)); element.Add(new XElement("UpdatedDate", transaction.UpdatedDate)); // Append the change history ChangeSetHistoryXElementAdapter adapter = new ChangeSetHistoryXElementAdapter(); element.Add(adapter.ToXElement(transaction.ChangeSetHistory)); return element; }