using System; using System.Collections.ObjectModel; using System.Linq; using Xamarin.Essentials; using Xamarin.Forms; namespace Project1503 { public partial class HistoryPage : ContentPage { private ObservableCollection historyItems; public HistoryPage() { InitializeComponent(); historyItems = LoadHistoryFromPreferences(); historyListView.ItemsSource = historyItems; } private ObservableCollection LoadHistoryFromPreferences() { var serializedHistory = Preferences.Get("inventoryHistory", string.Empty); var historyList = string.IsNullOrWhiteSpace(serializedHistory) ? new ObservableCollection() : Newtonsoft.Json.JsonConvert.DeserializeObject>(serializedHistory); // Order the historyList by DateAdded in descending order return new ObservableCollection(historyList.OrderByDescending(item => item.DateAdded)); } private void SaveHistoryToPreferences() { var serializedHistory = Newtonsoft.Json.JsonConvert.SerializeObject(historyItems); Preferences.Set("inventoryHistory", serializedHistory); } private async void OnHistoryItemSelected(object sender, SelectedItemChangedEventArgs e) { if (e.SelectedItem == null) return; var selectedItem = (HistoryItemModel)e.SelectedItem; await DisplayAlert("History Details", $"Action: {selectedItem.Action}\n" + $"Name: {selectedItem.ItemName}\n" + $"Tag Number: {selectedItem.TagNumber}\n" + $"Shelf Number: {selectedItem.ShelfNumber}\n" + $"Quantity: {selectedItem.Quantity}\n" + $"Description: {selectedItem.Description}\n" + $"Date: {selectedItem.DateAdded}", "OK"); ((ListView)sender).SelectedItem = null; } // Add the "Delete History" button handler private async void OnDeleteHistoryClicked(object sender, EventArgs e) { var result = await DisplayAlert("Delete History", "Are you sure you want to delete all history?", "Yes", "No"); if (result) { // Clear the historyItems collection historyItems.Clear(); SaveHistoryToPreferences(); // Save changes after clearing history } } } public class HistoryItemModel { public string Action { get; set; } public string ItemName { get; set; } public string TagNumber { get; set; } public string ShelfNumber { get; set; } public string Quantity { get; set; } public string Description { get; set; } public DateTime DateAdded { get; set; } } }