Implementation of Notifications page and its View Model
This commit is contained in:
parent
2d55f127b6
commit
8d3ffa99b2
@ -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
|
||||
|
||||
|
||||
}
|
||||
}
|
80
GMCabsDriverAssistantSolution/Views/NotificationsPage.xaml
Normal file
80
GMCabsDriverAssistantSolution/Views/NotificationsPage.xaml
Normal file
@ -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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user