@page "/fundvelo/pending_overview" @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;

@i18n["Pending"]

Id @i18n["Type"] @i18n["Date"] @i18n["Address"] @i18n["Picture"] @i18n["Action"]
@context.ID
@translateType(context.ReportType) @ReportRepositoryService.GetCurrentDateTimeFromMillis(context.ID) @getAddress(context)
@code { private List pendingReports = new(); private ReportRepositoryItem selectedReport; protected async override void OnInitialized() { base.OnInitialized(); PageHistoryManager.AddPageToHistory(NavigationManager.Uri); pendingReports.AddRange(await ReportRepositoryService.GetPendingFoundReports()); pendingReports.AddRange(await ReportRepositoryService.GetPendingMissingReports()); StateHasChanged(); } private void OnReportDblClicked(object item) { var report = item as ReportRepositoryItem; if (report == null) { selectedReport = null; return; } selectedReport = report; } 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 + ((!String.IsNullOrEmpty(geoInfo.Postcode) || !String.IsNullOrEmpty(geoInfo.Town)) ? ", " + 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) { string yes = i18n.GetString("Yes"); string no = i18n.GetString("No"); string result = await MatDialogService.AskAsync(i18n.GetString("Pending." + item.ReportType + ".Delete"), new string[] { yes, no }); await ScrollLockRemover.removeScrollLockAsync(); if (result.Equals(yes)) { try { await ReportRepositoryService.DeleteReport(item); pendingReports.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 void SendReport(ReportRepositoryItem item) { ReportDataProvider.ReportRepositoryItem = item; if (ReportRepositoryItem.Type.FOUND.Equals(item.ReportType)) { ReportDataProvider.Report = ((FoundReportRepositoryItem)item).Report; NavigationManager.NavigateTo("fundvelo/keydata/Found"); } else { ReportDataProvider.Report = ((MissingReportRepositoryItem)item).Report; NavigationManager.NavigateTo("fundvelo/keydata/Missing"); } } }