ReportHelper.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using MediaBrowser.Controller.Entities;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace MediaBrowser.Api.Reports
  8. {
  9. /// <summary> A report helper. </summary>
  10. public class ReportHelper
  11. {
  12. #region [Public Methods]
  13. /// <summary> Convert field to string. </summary>
  14. /// <typeparam name="T"> Generic type parameter. </typeparam>
  15. /// <param name="value"> The value. </param>
  16. /// <param name="fieldType"> Type of the field. </param>
  17. /// <returns> The field converted to string. </returns>
  18. public static string ConvertToString<T>(T value, ReportFieldType fieldType)
  19. {
  20. if (value == null)
  21. return "";
  22. switch (fieldType)
  23. {
  24. case ReportFieldType.String:
  25. return value.ToString();
  26. case ReportFieldType.Boolean:
  27. return value.ToString();
  28. case ReportFieldType.Date:
  29. return string.Format("{0:d}", value);
  30. case ReportFieldType.Time:
  31. return string.Format("{0:t}", value);
  32. case ReportFieldType.DateTime:
  33. return string.Format("{0:d}", value);
  34. case ReportFieldType.Minutes:
  35. return string.Format("{0}mn", value);
  36. case ReportFieldType.Int:
  37. return string.Format("", value);
  38. default:
  39. if (value is Guid)
  40. return string.Format("{0:N}", value);
  41. return value.ToString();
  42. }
  43. }
  44. /// <summary> Gets filtered report header metadata. </summary>
  45. /// <param name="reportColumns"> The report columns. </param>
  46. /// <param name="defaultReturnValue"> The default return value. </param>
  47. /// <returns> The filtered report header metadata. </returns>
  48. public static List<HeaderMetadata> GetFilteredReportHeaderMetadata(string reportColumns, Func<List<HeaderMetadata>> defaultReturnValue = null)
  49. {
  50. if (!string.IsNullOrEmpty(reportColumns))
  51. {
  52. var s = reportColumns.Split('|').Select(x => ReportHelper.GetHeaderMetadataType(x)).Where(x => x != HeaderMetadata.None);
  53. return s.ToList();
  54. }
  55. else
  56. if (defaultReturnValue != null)
  57. return defaultReturnValue();
  58. else
  59. return new List<HeaderMetadata>();
  60. }
  61. /// <summary> Gets header metadata type. </summary>
  62. /// <param name="header"> The header. </param>
  63. /// <returns> The header metadata type. </returns>
  64. public static HeaderMetadata GetHeaderMetadataType(string header)
  65. {
  66. if (string.IsNullOrEmpty(header))
  67. return HeaderMetadata.None;
  68. HeaderMetadata rType;
  69. if (!Enum.TryParse<HeaderMetadata>(header, out rType))
  70. return HeaderMetadata.None;
  71. return rType;
  72. }
  73. /// <summary> Gets java script localized string. </summary>
  74. /// <param name="phrase"> The phrase. </param>
  75. /// <returns> The java script localized string. </returns>
  76. public static string GetJavaScriptLocalizedString(string phrase)
  77. {
  78. var dictionary = BaseItem.LocalizationManager.GetJavaScriptLocalizationDictionary(BaseItem.ConfigurationManager.Configuration.UICulture);
  79. string value;
  80. if (dictionary.TryGetValue(phrase, out value))
  81. {
  82. return value;
  83. }
  84. return phrase;
  85. }
  86. /// <summary> Gets report view type. </summary>
  87. /// <param name="rowType"> The type. </param>
  88. /// <returns> The report view type. </returns>
  89. public static ReportViewType GetReportViewType(string rowType)
  90. {
  91. if (string.IsNullOrEmpty(rowType))
  92. return ReportViewType.ReportData;
  93. ReportViewType rType;
  94. if (!Enum.TryParse<ReportViewType>(rowType, out rType))
  95. return ReportViewType.ReportData;
  96. return rType;
  97. }
  98. /// <summary> Gets row type. </summary>
  99. /// <param name="rowType"> The type. </param>
  100. /// <returns> The row type. </returns>
  101. public static ReportIncludeItemTypes GetRowType(string rowType)
  102. {
  103. if (string.IsNullOrEmpty(rowType))
  104. return ReportIncludeItemTypes.BaseItem;
  105. ReportIncludeItemTypes rType;
  106. if (!Enum.TryParse<ReportIncludeItemTypes>(rowType, out rType))
  107. return ReportIncludeItemTypes.BaseItem;
  108. return rType;
  109. }
  110. /// <summary> Gets report display type. </summary>
  111. /// <param name="displayType"> Type of the display. </param>
  112. /// <returns> The report display type. </returns>
  113. public static ReportDisplayType GetReportDisplayType(string displayType)
  114. {
  115. if (string.IsNullOrEmpty(displayType))
  116. return ReportDisplayType.ScreenExport;
  117. ReportDisplayType rType;
  118. if (!Enum.TryParse<ReportDisplayType>(displayType, out rType))
  119. return ReportDisplayType.ScreenExport;
  120. return rType;
  121. }
  122. /// <summary> Gets server localized string. </summary>
  123. /// <param name="phrase"> The phrase. </param>
  124. /// <returns> The server localized string. </returns>
  125. public static string GetServerLocalizedString(string phrase)
  126. {
  127. return BaseItem.LocalizationManager.GetLocalizedString(phrase, BaseItem.ConfigurationManager.Configuration.UICulture);
  128. }
  129. #endregion
  130. }
  131. }