@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(); 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) { 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"); } } }