StatesManager.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Threading.Tasks;
  6. using System.Web.Mvc;
  7. using Abp.Dependency;
  8. using Abp.Domain.Repositories;
  9. using Abp.Runtime.Caching;
  10. using WeOnlineApp.BaseInfo;
  11. using IwbZero;
  12. namespace WeOnlineApp.CommonManager.States
  13. {
  14. public class StatesManager : IStatesManager, ISingletonDependency
  15. {
  16. private ICacheManager CacheManager { get; set; }
  17. private IRepository<SysState> Repository { get; set; }
  18. public StatesManager(
  19. ICacheManager cacheManage,
  20. IRepository<SysState> repository)
  21. {
  22. CacheManager = cacheManage;
  23. Repository = repository;
  24. }
  25. #region GetSelectList
  26. #region CodeFilter
  27. public async Task<List<SelectListItem>> GetSelectListAsync(QueryStateDisplayValue input, params string[] codeFilter)
  28. {
  29. return await GetSelectListAsync(input.TableName, input.ColumnName, codeFilter);
  30. }
  31. public async Task<List<SelectListItem>> GetSelectListAsync(string tableName, string columnName, params string[] codeFilter)
  32. {
  33. var sList = new List<SelectListItem>();
  34. var list = await GetStateListAsync(tableName, columnName, codeFilter);
  35. foreach (var l in list)
  36. {
  37. sList.Add(new SelectListItem { Text = l.DisplayValue, Value = l.CodeValue });
  38. }
  39. return sList;
  40. }
  41. public async Task<string> GetSelectListStrAsync(QueryStateDisplayValue input, params string[] codeFilter)
  42. {
  43. return await GetSelectListStrAsync(input.TableName, input.ColumnName, codeFilter);
  44. }
  45. public async Task<string> GetSelectListStrAsync(string tableName, string columnName, params string[] codeFilter)
  46. {
  47. var options = "";
  48. var list = await GetStateListAsync(tableName, columnName, codeFilter);
  49. foreach (var l in list)
  50. {
  51. options += $"<option value=\"{l.CodeValue}\" >{l.DisplayValue}</option>\r\n";
  52. }
  53. return options;
  54. }
  55. #endregion
  56. #region CodeFilterReversal
  57. public async Task<List<SelectListItem>> GetSelectListReversalAsync(QueryStateDisplayValue input, params string[] codeFilter)
  58. {
  59. return await GetSelectListReversalAsync(input.TableName, input.ColumnName, codeFilter);
  60. }
  61. public async Task<List<SelectListItem>> GetSelectListReversalAsync(string tableName, string columnName, params string[] codeFilter)
  62. {
  63. var sList = new List<SelectListItem>();
  64. var list = await GetStateListReversalAsync(tableName, columnName, codeFilter);
  65. foreach (var l in list)
  66. {
  67. sList.Add(new SelectListItem { Text = l.DisplayValue, Value = l.CodeValue });
  68. }
  69. return sList;
  70. }
  71. public async Task<string> GetSelectListStrsReversalAsync(QueryStateDisplayValue input, params string[] codeFilter)
  72. {
  73. return await GetSelectListStrsReversalAsync(input.TableName, input.ColumnName, codeFilter);
  74. }
  75. public async Task<string> GetSelectListStrsReversalAsync(string tableName, string columnName, params string[] codeFilter)
  76. {
  77. var options = "";
  78. var list = await GetStateListReversalAsync(tableName, columnName, codeFilter);
  79. foreach (var l in list)
  80. {
  81. options += $"<option value=\"{l.CodeValue}\" >{l.DisplayValue}</option>\r\n";
  82. }
  83. return options;
  84. }
  85. #endregion
  86. #region Exp
  87. public async Task<List<SelectListItem>> GetSelectListAsync(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  88. {
  89. return await GetSelectListAsync(input.TableName, input.ColumnName, exp);
  90. }
  91. public async Task<List<SelectListItem>> GetSelectListAsync(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  92. {
  93. var sList = new List<SelectListItem>();
  94. var list = await GetStateListAsync(tableName, columnName, exp);
  95. foreach (var l in list)
  96. {
  97. sList.Add(new SelectListItem { Text = l.DisplayValue, Value = l.CodeValue });
  98. }
  99. return sList;
  100. }
  101. public async Task<string> GetSelectListStrAsync(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  102. {
  103. return await GetSelectListStrAsync(input.TableName, input.ColumnName, exp);
  104. }
  105. public async Task<string> GetSelectListStrAsync(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  106. {
  107. var options = "";
  108. var list = await GetStateListAsync(tableName, columnName, exp);
  109. foreach (var l in list)
  110. {
  111. options += $"<option value=\"{l.CodeValue}\" >{l.DisplayValue}</option>\r\n";
  112. }
  113. return options;
  114. }
  115. #endregion
  116. #region StateDisplayDto
  117. public async Task<List<StateDisplayDto>> GetStateListAsync(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  118. {
  119. return await GetStateListAsync(input.TableName, input.ColumnName, exp);
  120. }
  121. public async Task<List<StateDisplayDto>> GetStateListAsync(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  122. {
  123. var list = (await Repository.GetAllListAsync(a => a.TableName == tableName && a.ColumnName == columnName))
  124. .AsQueryable();
  125. if (exp != null)
  126. {
  127. list = list.Where(exp);
  128. }
  129. var dtos = list.Select(a => new StateDisplayDto()
  130. {
  131. CodeValue = a.CodeValue,
  132. DisplayValue = a.DisplayValue
  133. }).ToList();
  134. return dtos;
  135. }
  136. public async Task<List<StateDisplayDto>> GetStateListAsync(string tableName, string columnName, params string[] codeFilter)
  137. {
  138. var list = await Repository.GetAllListAsync(a => a.TableName == tableName && a.ColumnName == columnName);
  139. if (codeFilter.Any())
  140. {
  141. foreach (var code in codeFilter)
  142. {
  143. list = list.Where(a => a.CodeValue == code).ToList();
  144. }
  145. }
  146. var dtos = list.Select(a => new StateDisplayDto()
  147. {
  148. CodeValue = a.CodeValue,
  149. DisplayValue = a.DisplayValue
  150. }).ToList();
  151. return dtos;
  152. }
  153. public async Task<List<StateDisplayDto>> GetStateListReversalAsync(string tableName, string columnName, params string[] codeFilter)
  154. {
  155. var list = await Repository.GetAllListAsync(a => a.TableName == tableName && a.ColumnName == columnName);
  156. if (codeFilter.Any())
  157. {
  158. foreach (var code in codeFilter)
  159. {
  160. list = list.Where(a => a.CodeValue != code).ToList();
  161. }
  162. }
  163. var dtos = list.Select(a => new StateDisplayDto()
  164. {
  165. CodeValue = a.CodeValue,
  166. DisplayValue = a.DisplayValue
  167. }).ToList();
  168. return dtos;
  169. }
  170. #endregion
  171. #endregion
  172. #region GetDisplayValue
  173. public async Task<string> GetDisplayValueAsync(QueryStateDisplayValue input)
  174. {
  175. return await GetDisplayValueAsync(input.TableName, input.ColumnName, input.CodeValue);
  176. }
  177. public async Task<string> GetDisplayValueAsync(string tableName, string columnName, string codeValue)
  178. {
  179. return await CacheManager.GetCache(IwbZeroConsts.SysStateCache).GetAsync(
  180. tableName + "." + columnName + "." + codeValue, () => DisplayValueAsync(tableName, columnName, codeValue));
  181. }
  182. private async Task<string> DisplayValueAsync(string tableName, string columnName, string codeValue)
  183. {
  184. var state = await Repository.FirstOrDefaultAsync(a =>
  185. a.TableName == tableName && a.ColumnName == columnName && a.CodeValue == codeValue);
  186. return state?.DisplayValue;
  187. }
  188. public string GetDisplayValue(QueryStateDisplayValue input)
  189. {
  190. return GetDisplayValue(input.TableName, input.ColumnName, input.CodeValue);
  191. }
  192. public string GetDisplayValue(string tableName, string columnName, string codeValue)
  193. {
  194. return CacheManager.GetCache(IwbZeroConsts.SysStateCache).Get(
  195. tableName + "." + columnName + "." + codeValue, () => DisplayValue(tableName, columnName, codeValue));
  196. }
  197. private string DisplayValue(string tableName, string columnName, string codeValue)
  198. {
  199. var state = Repository.FirstOrDefault(a =>
  200. a.TableName == tableName && a.ColumnName == columnName && a.CodeValue == codeValue);
  201. return state?.DisplayValue;
  202. }
  203. #endregion
  204. }
  205. }