AppealTypeService.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using DynamicExpresso;
  2. using Microsoft.AspNetCore.Components.Authorization;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Net.Http;
  7. using System.Net.Http.Json;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. using wispro.sp.entity;
  11. using wispro.sp.share;
  12. using wispro.sp.web.Auth;
  13. using wispro.sp.web.Models;
  14. namespace wispro.sp.web.Services
  15. {
  16. public class AppealTypeService
  17. {
  18. private readonly IHttpService _httpClient;
  19. private readonly JwtAuthenticationStateProvider _jwt;
  20. private List<AppealType> AppealTypes;
  21. public AppealTypeService(IHttpService httpClient, AuthenticationStateProvider jwt)
  22. {
  23. _httpClient = httpClient;
  24. _jwt = (JwtAuthenticationStateProvider)jwt;
  25. }
  26. public async Task<AppealRecord> getAppealRecord(int appealRecordId)
  27. {
  28. var data = await _httpClient.Get<AppealRecord>($"Appeal/GetAppealRecord?Id={appealRecordId}");
  29. return data;
  30. }
  31. public async Task<List<InputFieldValue>> GetInputFieldValues(int id, int state)
  32. {
  33. var data = await _httpClient.Get<List<InputFieldValue>>($"Appeal/GetInputFieldValues?Id={id}&state={state}");
  34. return data;
  35. }
  36. public async Task<List<AppealType>> GetItems()
  37. {
  38. if (AppealTypes == null)
  39. {
  40. AppealTypes = await _httpClient.Get<List<AppealType>>($"Appeal/GetAppealTypes");
  41. }
  42. return AppealTypes;
  43. }
  44. public List<AppealType> GetItems(int Type)
  45. {
  46. return AppealTypes.Where<AppealType>(at => at.Type == Type).ToList();
  47. }
  48. public List<AppealType> GetItems(PerformanceItem item)
  49. {
  50. List<AppealType> retList = new List<AppealType>();
  51. foreach (var at in GetItems(0))
  52. {
  53. if (!string.IsNullOrWhiteSpace(at.CanDoExpress))
  54. {
  55. var interpreter = new Interpreter();
  56. Func<PerformanceItem, bool> func = interpreter.ParseAsDelegate<Func<PerformanceItem, bool>>(at.CanDoExpress, "p");
  57. bool result = func.Invoke(item);
  58. if (result)
  59. {
  60. retList.Add(at);
  61. }
  62. }
  63. else
  64. {
  65. retList.Add(at);
  66. }
  67. }
  68. return retList;
  69. }
  70. public async Task<List<AppealRecord>> GetUserAppeals(int? userid)
  71. {
  72. var data = await _httpClient.Get<List<AppealRecord>>($"Appeal/GetAppealRecords?userId={userid}");
  73. return data;
  74. }
  75. public async Task<AppealType> GetItem(int appealTypeId)
  76. {
  77. if (AppealTypes == null)
  78. {
  79. AppealTypes = await _httpClient.Get<List<AppealType>>($"Appeal/GetAppealTypes");
  80. }
  81. var retData = AppealTypes.Where<AppealType>(ap => ap.Id == appealTypeId).FirstOrDefault();
  82. return retData;
  83. }
  84. public async Task<List<InputField>> GetInputFields(int appealTypeId,int State)
  85. {
  86. var data = await _httpClient.Get<List<InputField>>($"Appeal/GetInputField?appealTypeId={appealTypeId}&state={State}");
  87. return data;
  88. }
  89. public async Task<List<AttachFile>> GetAppealRecordAttachFiles(int appealRecordId)
  90. {
  91. var data = await _httpClient.Get<List<AttachFile>>($"Appeal/GetAppealRecordAttachFiles?appealRecordId={appealRecordId}");
  92. return data;
  93. }
  94. public async Task CreateAppeal(CreateAppealModel model)
  95. {
  96. List<AttachFile> attachFiles = new List<AttachFile>();
  97. foreach (var file in model.FileList)
  98. {
  99. AttachFile atfile = new AttachFile();
  100. var result = file.GetResponse<List<AttachFile>>();
  101. atfile.Id = result[0].Id;
  102. attachFiles.Add(atfile);
  103. }
  104. string strUrl = $"Appeal/CreateAppeal?ItemId={model.Item.Id}&typeid={model.AppealType.Id}&reviewerId={model.AppealRecord.ReviewerId}";
  105. AppealObject appealObject = new AppealObject();
  106. appealObject.attachFiles = attachFiles;
  107. appealObject.inputFieldValues = model.inputFieldValues;
  108. foreach(var fValue in appealObject.inputFieldValues)
  109. {
  110. fValue.InputField = null;
  111. }
  112. try
  113. {
  114. var data = await _httpClient.Post<ApiSaveResponse>(strUrl, appealObject);
  115. if (!data.Success)
  116. {
  117. if (!data.Success)
  118. {
  119. throw new ApplicationException(data.ErrorMessage);
  120. }
  121. }
  122. }
  123. catch(Exception ex)
  124. {
  125. throw ex;
  126. }
  127. }
  128. public async Task ReviewerAppeal(ReviewerAppealModel model)
  129. {
  130. string strUrl = $"Appeal/ReviewerAppeal?appealRecordId={model.AppealRecord.Id}";
  131. AppealObject appealObject = new AppealObject();
  132. appealObject.inputFieldValues = model.inputFieldValues;
  133. foreach (var fValue in appealObject.inputFieldValues)
  134. {
  135. fValue.InputField = null;
  136. }
  137. try
  138. {
  139. var data = await _httpClient.Post<ApiSaveResponse>(strUrl, appealObject);
  140. if (!data.Success)
  141. {
  142. throw new ApplicationException(data.ErrorMessage);
  143. }
  144. }
  145. catch(Exception ex)
  146. {
  147. throw ex;
  148. }
  149. //if (!data.IsSuccessStatusCode)
  150. //{
  151. // string strContent = await data.Content.ReadAsStringAsync();
  152. // throw new Exception(strContent);
  153. //}
  154. }
  155. }
  156. }