PWA Fundvelo der Caritas.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CaritasServiceFundVeloFoundConclusion.razor 5.6KB

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