Advertisement
Guest User

08.UsersAndProducts

a guest
Mar 18th, 2021
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. public static string GetUsersWithProducts(ProductShopContext context)
  2. {
  3. var users = context.Users
  4. .Where(u => u.ProductsSold.Any() && u.ProductsSold.Any(p => p.BuyerId != null))
  5. .ToArray()
  6. .Select(u => new UserExportModel
  7. {
  8. FirstName = u.FirstName,
  9. LastName = u.LastName,
  10. Age = u.Age,
  11. SoldProducts = new SoldProductContainer
  12. {
  13. Count = u.ProductsSold.Count,
  14. Products = u.ProductsSold.Select(p => new SoldProductOutputModel
  15. {
  16. Name = p.Name,
  17. Price = p.Price
  18. }).OrderByDescending(p => p.Price).ToArray()
  19. }
  20. })
  21. .OrderByDescending(u => u.SoldProducts.Count)
  22. .Take(10).ToArray();
  23.  
  24. var finalModel = new UserProductsFinalModel
  25. {
  26. Count = users.Length,
  27. Users = users
  28. };
  29.  
  30. var xmlSerializer = new XmlSerializer(typeof(UserProductsFinalModel), new XmlRootAttribute("Users"));
  31.  
  32. var namespaces = new XmlSerializerNamespaces();
  33.  
  34. namespaces.Add("", "");
  35.  
  36. var textWriter = new StringWriter();
  37. xmlSerializer.Serialize(textWriter, finalModel, namespaces);
  38.  
  39. return textWriter.ToString();
  40. }
  41.  
  42.  
  43. [XmlType("User")]
  44. public class UserExportModel
  45. {
  46. [XmlElement("firstName")]
  47. public string FirstName { get; set; }
  48.  
  49. [XmlElement("lastName")]
  50. public string LastName { get; set; }
  51.  
  52. [XmlElement("age")]
  53. public int? Age { get; set; }
  54.  
  55. [XmlElement("SoldProducts")]
  56. public SoldProductRoot SoldProducts { get; set; }
  57. }
  58.  
  59. [XmlType("SoldProducts")]
  60. public class SoldProductContainer
  61. {
  62. [XmlElement("count")]
  63. public int Count { get; set; }
  64.  
  65. [XmlArray("products")]
  66. public SoldProductOutputModel[] Products { get; set; }
  67.  
  68. }
  69.  
  70. [XmlType("Product")]
  71. public class SoldProductOutputModel
  72. {
  73. [XmlElement("name")]
  74. public string Name { get; set; }
  75.  
  76. [XmlElement("price")]
  77. public decimal Price { get; set; }
  78. }
  79.  
  80. [XmlRoot("Users")]
  81. public class UserProductsFinalModel
  82. {
  83. [XmlElement("count")]
  84. public int Count { get; set; }
  85.  
  86. [XmlArray("users")]
  87. public UserExportModel[] Users { get; set; }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement