@page "/fundvelo/{FromRoute}" @using cwebplusApp.Shared.Services; @using cwebplusApp.Shared.Models; @inject NavigationManager NavigationManager @inject PageHistoryManager PageHistoryManager @inject ReportDataProvider ReportDataProvider @inject ReportRepositoryService ReportRepositoryService @inject IStringLocalizer I18n; @inject Toaster Toaster; @inject IMatDialogService MatDialogService; @inject ScrollLockRemover ScrollLockRemover;
@if (FromRoute.Equals("history_found")) {

@I18n["HistoryFound"]

} else {

@I18n["HistoryMissing"]

}
Id @I18n["Type"] @I18n["Date"] @if (FromRoute.Equals("history_found")) { @I18n["Address"] } @I18n["Picture"] @I18n["Action"] @context.ID @translateType(context.ReportType) @ReportRepositoryService.GetCurrentDateTimeFromMillis(context.ID) @if (FromRoute.Equals("history_found")) { @getAddress(context) }
@code { [Parameter] public string FromRoute { get; set; } private List transmittedReports = new(); private ReportRepositoryItem selectedReport; protected override void OnInitialized() { base.OnInitialized(); PageHistoryManager.AddPageToHistory(NavigationManager.Uri); StateHasChanged(); } protected async override void OnParametersSet() { base.OnParametersSet(); if (FromRoute.Equals("history_found")) { transmittedReports.AddRange(await ReportRepositoryService.GetTransmittedFoundReports()); } else { transmittedReports.AddRange(await ReportRepositoryService.GetTransmittedMissingReports()); } StateHasChanged(); } private string translateType(ReportRepositoryItem.Type type) { return I18n.GetString("ReportType." + type); } private string getTypeBackgroundStyle(ReportRepositoryItem.Type type) { return ReportRepositoryItem.Type.FOUND.Equals(type) ? "background: linear-gradient(45deg, darkseagreen, transparent)" : "background: linear-gradient(45deg, darksalmon, transparent)"; } private string getAddress(ReportRepositoryItem item) { if (ReportRepositoryItem.Type.FOUND.Equals(item.ReportType)) { GeographicInfo geoInfo = ((FoundReportRepositoryItem)item).Report.GeographicInfo; return geoInfo.Address + ", " + geoInfo.Postcode + " " + geoInfo.Town; } return ""; } private async Task ShowPicture(ReportRepositoryItem item) { string picData = ReportRepositoryItem.Type.FOUND.Equals(item.ReportType) ? ((FoundReportRepositoryItem)item).Report.FotoString : ((MissingReportRepositoryItem)item).Report.FotoString; await MatDialogService.OpenAsync(typeof(PictureDialog), new MatDialogOptions() { Attributes = new Dictionary(){ {"ImgUrl", picData}, } }); await ScrollLockRemover.removeScrollLockAsync(); } private bool HasNoPicture(ReportRepositoryItem item) { string picData = ReportRepositoryItem.Type.FOUND.Equals(item.ReportType) ? ((FoundReportRepositoryItem)item).Report.FotoString : ((MissingReportRepositoryItem)item).Report.FotoString; return String.IsNullOrEmpty(picData); } private async void DeleteReport(ReportRepositoryItem item, bool ask = true) { string yes = I18n.GetString("Yes"); string no = I18n.GetString("No"); string result = ask ? await MatDialogService.AskAsync(I18n.GetString("Pending." + item.ReportType + ".Delete"), new string[] { yes, no }) : yes; await ScrollLockRemover.removeScrollLockAsync(); if (result.Equals(yes)) { try { await ReportRepositoryService.DeleteReport(item); transmittedReports.Remove(item); StateHasChanged(); Toaster.ShowSuccess(I18n.GetString("Success.DeleteReport.Title"), I18n.GetString("Success.DeleteReport.Msg", item.ID)); } catch (Exception ex) { Toaster.ShowWarning(I18n.GetString("Error.DeleteReport.Title"), I18n.GetString("Error.DeleteReport.Msg", item.ID)); } } } private async void DeleteAll() { string yes = I18n.GetString("Yes"); string no = I18n.GetString("No"); string result = await MatDialogService.AskAsync(I18n.GetString("History.DELETE"), new string[] { yes, no }); await ScrollLockRemover.removeScrollLockAsync(); if (result.Equals(yes)) { foreach (ReportRepositoryItem item in transmittedReports) { DeleteReport(item, false); } } } }