@ -0,0 +1,85 @@ | |||||
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 | |||||
} | |||||
} |
@ -0,0 +1,80 @@ | |||||
<?xml version="1.0" encoding="utf-8" ?> | |||||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | |||||
x:Class="GMCabsDriverAssistantSolution.Views.NotificationsPage" | |||||
xmlns:vm="clr-namespace:GMCabsDriverAssistantSolution.ViewModels" | |||||
Title="{Binding Title}"> | |||||
<ContentPage.BindingContext> | |||||
<vm:NotificationsViewModel /> | |||||
</ContentPage.BindingContext> | |||||
<ContentPage.Resources> | |||||
<ResourceDictionary> | |||||
<Color x:Key="Accent">#96d1ff</Color> | |||||
</ResourceDictionary> | |||||
</ContentPage.Resources> | |||||
<ContentPage.Content> | |||||
<StackLayout Orientation="Vertical" | |||||
BackgroundColor="#DCDCDC"> | |||||
<Frame Margin="16" | |||||
CornerRadius="8" | |||||
VerticalOptions="FillAndExpand" | |||||
Padding="8"> | |||||
<StackLayout Orientation="Vertical"> | |||||
<StackLayout Orientation="Horizontal" | |||||
HorizontalOptions="StartAndExpand" | |||||
Margin="8"> | |||||
<StackLayout Orientation="Vertical" > | |||||
<Image Source="message.png" HeightRequest="50"/> | |||||
<Image Source="ImportantIconSmall.png" | |||||
HeightRequest="40" | |||||
VerticalOptions="CenterAndExpand"/> | |||||
</StackLayout> | |||||
<StackLayout Orientation="Vertical" | |||||
HorizontalOptions="FillAndExpand"> | |||||
<Label Text="{Binding SelectedNotification.Subject}" | |||||
TextColor="Black" | |||||
FontSize="28"/> | |||||
<Grid HorizontalOptions="StartAndExpand"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="*" /> | |||||
<RowDefinition Height="*" /> | |||||
<RowDefinition Height="*" /> | |||||
</Grid.RowDefinitions> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="Auto" /> | |||||
<ColumnDefinition Width="1*" /> | |||||
</Grid.ColumnDefinitions> | |||||
<Label Text="FROM" | |||||
FontSize="15" | |||||
Grid.Row="0" | |||||
Grid.Column="0"/> | |||||
<Label Text="{Binding SelectedNotification.FromName}" | |||||
TextColor="Black" | |||||
FontSize="16" | |||||
Grid.Row="0" | |||||
Grid.Column="1"/> | |||||
<Label Text="SENT" | |||||
FontSize="15" | |||||
Grid.Row="1" | |||||
Grid.Column="0"/> | |||||
<Label Text="{Binding SelectedNotification.SentDate, StringFormat='{0:dd/MM/yyyy hh:mm tt}'}" | |||||
FontSize="15" | |||||
Grid.Row="1" | |||||
Grid.Column="1"/> | |||||
</Grid> | |||||
</StackLayout> | |||||
</StackLayout> | |||||
<ScrollView VerticalOptions="StartAndExpand" Padding="16, 0"> | |||||
<Label Text="{Binding SelectedNotification.Body}" | |||||
FontSize="20" | |||||
TextColor="Black" /> | |||||
</ScrollView> | |||||
<Button Margin="8,0,8,0" | |||||
FontSize="20" | |||||
Text="Ok" | |||||
Command="{Binding MarkNotificationAsViewedCommand}"/> | |||||
</StackLayout> | |||||
</Frame> | |||||
</StackLayout> | |||||
</ContentPage.Content> | |||||
</ContentPage> |
@ -0,0 +1,20 @@ | |||||
namespace GMCabsDriverAssistantSolution.Views; | |||||
public partial class NotificationsPage : ContentPage | |||||
{ | |||||
#region Fields | |||||
#endregion | |||||
#region Properties | |||||
#endregion | |||||
#region Constructor | |||||
public NotificationsPage() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
#endregion | |||||
#region Methods | |||||
#endregion | |||||
} |