using Justice.Helpers; using Justice.Models; using System; using System.Collections.ObjectModel; using System.Threading.Tasks; using Justice.Services; namespace Justice.Views { public partial class ViewReportsPage : ContentPage { private readonly DatabaseHelper _databaseHelper; public ObservableCollection Reports { get; set; } public ViewReportsPage() { InitializeComponent(); _databaseHelper = new DatabaseHelper(); Reports = new ObservableCollection(); ReportsListView.ItemsSource = Reports; } protected override async void OnAppearing() { base.OnAppearing(); await LoadReportsAsync(); } private async Task LoadReportsAsync() { try { var reportsFromDb = await _databaseHelper.GetAllAsync(); Reports.Clear(); foreach (var report in reportsFromDb) { Reports.Add(report); } } catch (Exception ex) { await DisplayAlert("Error", $"Failed to load reports: {ex.Message}", "OK"); } } private async void OnReportSelected(object sender, SelectedItemChangedEventArgs e) { if (e.SelectedItem is IncidentReport selectedReport) { await DisplayAlert("Report Details", $"Type: {selectedReport.IncidentType}\n" + $"Description: {selectedReport.Description}\n" + $"Address: {selectedReport.Address}\n" + $"Submitted on: {selectedReport.DateTime:MMM dd, yyyy HH:mm}\n" + $"Attachment: {(string.IsNullOrWhiteSpace(selectedReport.AttachmentPath) ? "None" : "Attached")}", "OK"); // Deselect the item ReportsListView.SelectedItem = null; } } private async void OnDeleteReportClicked(object sender, EventArgs e) { // Get the button's binding context if (sender is Button deleteButton && deleteButton.CommandParameter is IncidentReport reportToDelete) { bool confirm = await DisplayAlert("Delete Report", "Are you sure you want to delete this report?", "Yes", "No"); if (confirm) { try { // Delete the report from the database await _databaseHelper.DeleteAsync(reportToDelete); // Remove the report from the ObservableCollection Reports.Remove(reportToDelete); await DisplayAlert("Success", "Report deleted successfully.", "OK"); } catch (Exception ex) { await DisplayAlert("Error", $"Failed to delete report: {ex.Message}", "OK"); } } } } private void MenuItem_Clicked(object sender, EventArgs e) { } } }