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
|
|
|
|
|
|
}
|
|
}
|