You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

85 lines
2.7 KiB

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<NotificationDto> 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<NotificationDto>();
MarkNotificationAsViewedCommand = new Command(OnMarkNotificationAsViewedClicked);
GetNotifications();
}
#endregion
#region Methods
private async void GetNotifications()
{
string appToken = Preferences.Get(SecureStorageData.Token, "");
gmCabsDriverService = new GMCabsDriverService();
Notifications.Clear();
List<NotificationDto> 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
}
}