PWA Fundvelo der Caritas.
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

CaritasServiceFundVeloFoundConclusion.razor 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. @page "/fundvelo/conclusion_found"
  2. @using cwebplusApp.Shared.Services;
  3. @using cwebplusApp.Shared.Models;
  4. @using cwebplusApp.Components;
  5. @inject NavigationManager NavigationManager;
  6. @inject IStringLocalizer<Resources> I18n;
  7. @inject PageHistoryManager PageHistoryManager;
  8. @inject ReportDataProvider ReportDataProvider;
  9. @inject IBicycleRestService IBicycleRestService;
  10. @inject Toaster Toaster;
  11. @inject AppState AppState;
  12. <div class="row px-3 h-100">
  13. <div class="row no-gutters align-items-start justify-content-center w-100">
  14. <MatHeadline4 Style="font-family:Ubuntu;padding-top:1em">@I18n["Confirmation"]</MatHeadline4>
  15. </div>
  16. @if (ResponseStatus.OK == responseStatus) {
  17. <div class="row no-gutters align-items-start justify-content-center w-100" style="height:fit-content">
  18. <div class="w-100" style="text-align: center">
  19. <MatHeadline6 Style="font-family:Ubuntu">@I18n["FinishedTextFound"]</MatHeadline6>
  20. </div>
  21. <div class="w-100" style="text-align: center">
  22. <MatHeadline6 Style="font-family:Ubuntu">@referenceNumber</MatHeadline6>
  23. </div>
  24. </div>
  25. }
  26. <div class="row no-gutters align-items-start justify-content-center w-100" style="height:fit-content">
  27. @if (running) {
  28. <div style="width:48px;margin:0 auto;">
  29. <MatProgressCircle Indeterminate="true" Size="MatProgressCircleSize.Large" />
  30. </div>
  31. <div class="w-100" style="text-align:center;">
  32. <h6 style="font-style:italic;padding-bottom:1em">@I18n["Info.Report.Transmitting"]</h6>
  33. </div>
  34. } else {
  35. if (ResponseStatus.OK == responseStatus) {
  36. <Animate Animation="Animations.ZoomIn" Duration="TimeSpan.FromSeconds(2.5)">
  37. <DoneImage></DoneImage>
  38. </Animate>
  39. } else if (ResponseStatus.Error == responseStatus) {
  40. <Animate Animation="Animations.ZoomIn" Duration="TimeSpan.FromSeconds(2.5)">
  41. <FailureImage></FailureImage>
  42. </Animate>
  43. } else {
  44. <Animate Animation="Animations.ZoomIn" Duration="TimeSpan.FromSeconds(2.5)">
  45. <WarningImage></WarningImage>
  46. </Animate>
  47. }
  48. }
  49. </div>
  50. @if (!running) {
  51. if (ResponseStatus.Error == responseStatus) {
  52. <div class="row no-gutters align-items-end justify-content-center w-100" style="padding-bottom:2em;padding-top:2em">
  53. <div class="col" style="padding-right:0.5em">
  54. <MatButton Class="w-100" Outlined="true" @onclick="EditData" Style="padding-left: 3px; padding-right: 3px">@I18n["EditData"]</MatButton>
  55. </div>
  56. <div class="col" style="padding-left:0.5em">
  57. <MatButton Class="w-100" Raised="true" @onclick="Cancel">@I18n["Cancel"]</MatButton>
  58. </div>
  59. </div>
  60. } else {
  61. <div class="row no-gutters align-items-end justify-content-center w-100" style="padding-bottom:2em;padding-top:2em">
  62. <div class="col w-100 text-center">
  63. <MatButton Class="w-50" Raised="true" @onclick="Finished">@I18n["Finished"]</MatButton>
  64. </div>
  65. </div>
  66. }
  67. }
  68. </div>
  69. @code {
  70. enum ResponseStatus : ushort {
  71. OK = 1,
  72. Error = 10,
  73. NoConnection = 20
  74. }
  75. private Animate doneAnimZoom;
  76. private ResponseStatus responseStatus = ResponseStatus.NoConnection;
  77. private bool running = true;
  78. private string referenceNumber;
  79. private ReportResponse response;
  80. protected async override void OnInitialized() {
  81. base.OnInitialized();
  82. try {
  83. if (ReportDataProvider.ReportRepositoryItem != null) {
  84. response = await IBicycleRestService.SendFoundReport((FoundReportRepositoryItem)ReportDataProvider.ReportRepositoryItem);
  85. } else {
  86. response = await IBicycleRestService.SendFoundReport(ReportDataProvider.Report);
  87. }
  88. responseStatus = response == null ? ResponseStatus.NoConnection : System.Net.HttpStatusCode.OK == response.StatusCode ? ResponseStatus.OK : ResponseStatus.Error;
  89. } catch (HttpRequestException ex) {
  90. response = new(I18n.GetString("FoundBike"), new string[] { ex.Message });
  91. responseStatus = ResponseStatus.Error;
  92. }
  93. running = false;
  94. if (ResponseStatus.OK == responseStatus) {
  95. Toaster.ShowSuccess(I18n.GetString("FoundBike"), response.Message);
  96. referenceNumber = (response.Data != null && response.Data.Length > 0) ? response.Data[0] : "-";
  97. PageHistoryManager.Reset();
  98. } else if (ResponseStatus.Error == responseStatus) {
  99. Toaster.ShowError(response.Message, response.GetDataAsFormattedList());
  100. } else {
  101. Toaster.ShowWarning(I18n.GetString("Warning.NoConnection.Title"), I18n.GetString("Warning.NoConnection.Msg"));
  102. PageHistoryManager.Reset();
  103. }
  104. StateHasChanged();
  105. AppState.NotifyChanged();
  106. }
  107. private void Finished() {
  108. NavigationManager.NavigateTo("caritas_services");
  109. }
  110. private void Cancel() {
  111. Finished();
  112. }
  113. private void EditData() {
  114. NavigationManager.NavigateTo("fundvelo/keydata/Found");
  115. }
  116. }