Guest User

Untitled

a guest
Jul 16th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.ComponentModel.DataAnnotations;
  6. using System.Linq;
  7. using System.Transactions;
  8. using System.Web;
  9. using System.Web.Mvc;
  10. using System.Web.Routing;
  11. using System.Web.Security;
  12. using MSharp.Framework;
  13. using MSharp.Framework.Data;
  14. using MSharp.Framework.Mvc;
  15. using MSharp.Framework.Services;
  16. using Domain;
  17. using vm = ViewModel;
  18.  
  19. namespace Controllers
  20. {
  21. [RestrictTo(Roles = "User")]
  22. [EscapeGCop("Auto generated code.")]
  23. public partial class StockSummary_ThreeYearChangeController : BaseController
  24. {
  25. [HttpPost, Route("StockSummary_ThreeYearChange/Export")]
  26. public ActionResult Export(vm.StockSummary_ThreeYearChange info)
  27. {
  28. try
  29. {
  30. return ExportToExcell(info, ExcelExporter.Output.ExcelXml);
  31. }
  32. catch (Exception ex)
  33. {
  34. return Notify(ex.Message, "error");
  35. }
  36. }
  37.  
  38. [NonAction, OnBound]
  39. public void OnBound(vm.StockSummary_ThreeYearChange info)
  40. {
  41. info.Key_Options.Clear();
  42. info.Key_Options.AddRange(GetBaseSource(info).Select(x => x.Key).Distinct());
  43.  
  44. info.Items = GetSource(info).Select(item => new vm.StockSummary_ThreeYearChange.ListItem(item)).ToList();
  45. }
  46.  
  47. [NonAction]
  48. IEnumerable<NYearChange> GetBaseSource(vm.StockSummary_ThreeYearChange info)
  49. {
  50. IEnumerable<NYearChange> result = new NYearChangeFactory(info.Organisation, Year.GetCurrentYear()).GetThreeYearChangeData<RPStockByTenureField>();
  51.  
  52. return result;
  53. }
  54.  
  55. [NonAction]
  56. IEnumerable<NYearChange> GetSource(vm.StockSummary_ThreeYearChange info)
  57. {
  58. var result = GetBaseSource(info);
  59.  
  60. if (info.Key.Any())
  61. {
  62. result = result.Where(n => info.Key.Any(x => n.Key == x));
  63. }
  64.  
  65. if (info.Sort.Expression == "YearBeforeLastValue")
  66. {
  67. result = info.Sort.Apply(result, item => item.YearBeforeLastValue);
  68. }
  69. else
  70. {
  71. result = info.Sort.Apply(result);
  72. }
  73.  
  74. return result;
  75. }
  76.  
  77. [NonAction]
  78. public ActionResult ExportToExcell(vm.StockSummary_ThreeYearChange info, ExcelExporter.Output mode)
  79. {
  80. var exporter = new ExcelExporter("Stock summary - three year change");
  81.  
  82. // Add header texts:
  83. exporter.AddColumn("Tenure/type");
  84. exporter.AddColumn("Three-year change (units)");
  85. exporter.AddColumn("Three-year change (%)");
  86. exporter.Columns[1].DataType = "Number";
  87. exporter.Columns[2].DataType = "Number";
  88. exporter.Columns[3].DataType = "Number";
  89. exporter.Columns[4].DataType = "Number";
  90. exporter.Columns[5].DataType = "Number";
  91.  
  92. // Add data rows:
  93.  
  94. foreach (var item in GetSource(info))
  95. {
  96. exporter.AddRow(item.Key,
  97. item.ThreeYearChangeUnits,
  98. item.ThreeYearChangePercentage);
  99. }
  100.  
  101. return File(System.Text.Encoding.UTF8.GetBytes(exporter.Generate(mode)),
  102. "application/vnd.ms-excel",
  103. $"{info.Organisation.Name} - Stock Summary" + exporter.GetFileExtension(mode));
  104. }
  105. }
  106. }
  107.  
  108. namespace ViewModel
  109. {
  110. [EscapeGCop("Auto generated code.")]
  111. public partial class StockSummary_ThreeYearChange : IViewModel
  112. {
  113. public StockSummary_ThreeYearChange()
  114. {
  115. Sort = new ListSortExpression(this);
  116. }
  117.  
  118. [FromQuery("SHRN")]
  119. public Organisation Organisation { get; set; }
  120.  
  121. public Year Year
  122. {
  123. get
  124. {
  125. return Organisation.GetMostRecent(Year.GetCurrentYear());
  126. }
  127. }
  128.  
  129. public IEnumerable<Year> Years
  130. {
  131. get
  132. {
  133. return Year.GetPreviousYears().Union(Year);
  134. }
  135. }
  136.  
  137. [FromQuery("s")]
  138. public ListSortExpression Sort { get; set; }
  139.  
  140. // Search filters
  141. public List<string> Key { get; set; } = new List<string>();
  142.  
  143. [ReadOnly(true)]
  144. public List<SelectListItem> Key_Options = new List<SelectListItem>();
  145.  
  146. [ReadOnly(true)]
  147. public List<ListItem> Items = new List<ListItem>();
  148.  
  149. public partial class ListItem : IViewModel
  150. {
  151. public ListItem(NYearChange item)
  152. {
  153. Item = item;
  154. }
  155.  
  156. public NYearChange Item { get; set; }
  157.  
  158. [ReadOnly(true)]
  159. public NYearChange OrganisationNYearChange { get; set; }
  160. }
  161. }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment