using GMCabsDriverAssistant.Models; using GMCabsDriverAssistant.Services; using GMCabsDriverAssistant.Utils; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GMCabsDriverAssistantSolution.ViewModels { class NotificationsViewModel : BaseViewModel { #region Fields private GMCabsDriverService gmCabsDriverService; private NotificationDto _selectedNotification; #endregion #region Properties public ObservableCollection Notifications { get; set; } public Command MarkNotificationAsViewedCommand { get; } public NotificationDto SelectedNotification { get => _selectedNotification; set => SetProperty(ref _selectedNotification, value); } #endregion #region Constructor public NotificationsViewModel() { Title = "Notifications"; Notifications = new ObservableCollection(); MarkNotificationAsViewedCommand = new Command(OnMarkNotificationAsViewedClicked); GetNotifications(); } #endregion #region Methods private async void GetNotifications() { string appToken = Preferences.Get(SecureStorageData.Token, ""); gmCabsDriverService = new GMCabsDriverService(); Notifications.Clear(); List notifications = await gmCabsDriverService.GetNotifications(appToken); if (notifications.Count > 0) { foreach (NotificationDto notification in notifications) { Notifications.Add(notification); } SelectedNotification = Notifications[0]; } else { await Shell.Current.GoToAsync(".."); } } private async void OnMarkNotificationAsViewedClicked(object obj) { string appToken = Preferences.Get(SecureStorageData.Token, ""); gmCabsDriverService = new GMCabsDriverService(); bool isSuccess = await gmCabsDriverService.MarkNotificationAsViewed(appToken, SelectedNotification.Id); if (isSuccess) { Notifications.Remove(SelectedNotification); if (Notifications.Count > 0) { SelectedNotification = Notifications[0]; } else { await Shell.Current.GoToAsync(".."); } } } #endregion } }