PageRenderTime 38ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/Katmai_June_CTP/ShoppingCart/ShoppingCartService/CS/ShoppingCartService/Invoice.cs

#
C# | 93 lines | 72 code | 7 blank | 14 comment | 0 complexity | 9948effe47291b38c031b73b576a570f MD5 | raw file
  1. //-----------------------------------------------------------------------
  2. // This file is part of the Microsoft Code Samples.
  3. //
  4. // Copyright (C) Microsoft Corporation. All rights reserved.
  5. //
  6. //This source code is intended only as a supplement to Microsoft
  7. //Development Tools and/or on-line documentation. See these other
  8. //materials for detailed information regarding Microsoft code samples.
  9. //
  10. //THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
  11. //KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  12. //IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  13. //PARTICULAR PURPOSE.
  14. //-----------------------------------------------------------------------
  15. #region Using directives
  16. using System;
  17. using System.Collections.Generic;
  18. using System.IO;
  19. using System.Text;
  20. using System.Xml;
  21. #endregion
  22. namespace Microsoft.Samples.SqlServer
  23. {
  24. public class Invoice
  25. {
  26. private int m_numberItems;
  27. public int NumberItems
  28. {
  29. get { return m_numberItems; }
  30. }
  31. private double m_totalAmount;
  32. public double TotalAmount
  33. {
  34. get { return m_totalAmount; }
  35. }
  36. private Dictionary<int, LineItem> m_shoppingCart;
  37. public Invoice(Dictionary<int, LineItem> shoppingCart)
  38. {
  39. m_shoppingCart = shoppingCart;
  40. foreach (int itemNumber in m_shoppingCart.Keys)
  41. {
  42. LineItem li = m_shoppingCart[itemNumber];
  43. m_numberItems += li.Quantity;
  44. m_totalAmount += li.Price;
  45. }
  46. }
  47. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Double.ToString")]
  48. public Stream Serialize()
  49. {
  50. MemoryStream memstream = new MemoryStream();
  51. XmlWriter writer = new XmlTextWriter(memstream, Encoding.ASCII);
  52. writer.WriteStartElement("Invoice");
  53. foreach (int itemNumber in m_shoppingCart.Keys)
  54. {
  55. LineItem li = m_shoppingCart[itemNumber];
  56. writer.WriteStartElement("LineItem");
  57. writer.WriteStartElement("ItemNumber");
  58. writer.WriteString(li.ItemNumber.ToString());
  59. writer.WriteEndElement();
  60. writer.WriteStartElement("Name");
  61. writer.WriteString(li.Name);
  62. writer.WriteEndElement();
  63. writer.WriteStartElement("UnitPrice");
  64. writer.WriteString(li.UnitPrice.ToString());
  65. writer.WriteEndElement();
  66. writer.WriteStartElement("Quantity");
  67. writer.WriteString(li.Quantity.ToString());
  68. writer.WriteEndElement();
  69. writer.WriteStartElement("Price");
  70. writer.WriteString(li.Price.ToString());
  71. writer.WriteEndElement();
  72. writer.WriteEndElement();
  73. }
  74. writer.WriteStartElement("NumberItems");
  75. writer.WriteString(NumberItems.ToString());
  76. writer.WriteEndElement();
  77. writer.WriteStartElement("TotalAmount");
  78. writer.WriteString(TotalAmount.ToString());
  79. writer.WriteEndElement();
  80. writer.WriteEndElement();
  81. writer.Flush();
  82. memstream.Seek(0, SeekOrigin.Begin);
  83. return memstream;
  84. }
  85. }
  86. }