Implementation of Accept Booking Page and its View Model
This commit is contained in:
parent
231c3c5fe0
commit
71c2de304f
@ -0,0 +1,176 @@
|
||||
using GMCabsDriverAssistant.Models;
|
||||
using GMCabsDriverAssistant.Services;
|
||||
using GMCabsDriverAssistantSolution.Models.Rydo;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GMCabsDriverAssistantSolution.ViewModels
|
||||
{
|
||||
[QueryProperty(nameof(BookingId), nameof(BookingId))]
|
||||
[QueryProperty(nameof(PickUpAddress), nameof(PickUpAddress))]
|
||||
[QueryProperty(nameof(DropUpAddress), nameof(DropUpAddress))]
|
||||
[QueryProperty(nameof(IsFutureBooking), nameof(IsFutureBooking))]
|
||||
[Obsolete]
|
||||
public class AcceptBookingViewModel : BaseViewModel
|
||||
{
|
||||
#region Constants
|
||||
|
||||
private const int ASSISTANT_DRIVER_SOURCE = 4;
|
||||
|
||||
#endregion Constants
|
||||
|
||||
#region Fields
|
||||
public int seconds = 180;
|
||||
private string timerSeconds = "3:00";
|
||||
private string bookingId = "";
|
||||
public string pickUpAddress = "";
|
||||
public string dropUpAddress = "";
|
||||
private string errorMessage = "";
|
||||
private bool isProcessing = true;
|
||||
private bool isBookingConfirmed = false;
|
||||
public bool isBookingUnavailable = false;
|
||||
public bool isFutureBooking = false;
|
||||
private bool isBookingConfirmedAndOnDemand = false;
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
public string TimerSeconds
|
||||
{
|
||||
get => timerSeconds;
|
||||
set
|
||||
{
|
||||
SetProperty(ref timerSeconds, value);
|
||||
}
|
||||
}
|
||||
public string ErrorMessage
|
||||
{
|
||||
get => errorMessage;
|
||||
set
|
||||
{
|
||||
SetProperty(ref errorMessage, value);
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
public string BookingId
|
||||
{
|
||||
get => bookingId;
|
||||
set
|
||||
{
|
||||
SetProperty(ref bookingId, value);
|
||||
Processing(value);
|
||||
}
|
||||
}
|
||||
public string PickUpAddress
|
||||
{
|
||||
get => pickUpAddress;
|
||||
set
|
||||
{
|
||||
SetProperty(ref pickUpAddress, value);
|
||||
}
|
||||
}
|
||||
public string DropUpAddress
|
||||
{
|
||||
get => dropUpAddress;
|
||||
set
|
||||
{
|
||||
SetProperty(ref dropUpAddress, value);
|
||||
}
|
||||
}
|
||||
public bool IsProcessing
|
||||
{
|
||||
get => isProcessing;
|
||||
set => SetProperty(ref isProcessing, value);
|
||||
}
|
||||
public bool IsBookingConfirmed
|
||||
{
|
||||
get => isBookingConfirmed;
|
||||
set => SetProperty(ref isBookingConfirmed, value);
|
||||
}
|
||||
public bool IsBookingUnavailable
|
||||
{
|
||||
get => isBookingUnavailable;
|
||||
set => SetProperty(ref isBookingUnavailable, value);
|
||||
}
|
||||
public bool IsFutureBooking
|
||||
{
|
||||
get => isFutureBooking;
|
||||
set => SetProperty(ref isFutureBooking, value);
|
||||
}
|
||||
public bool IsBookingConfirmedAndOnDemand
|
||||
{
|
||||
get => isBookingConfirmedAndOnDemand;
|
||||
set => SetProperty(ref isBookingConfirmedAndOnDemand, value);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
public AcceptBookingViewModel()
|
||||
{
|
||||
Title = "Processing";
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
[Obsolete]
|
||||
private async void Processing(string booking_Id)
|
||||
{
|
||||
string rydoAccessToken = Preferences.Get(EftposLoginResponse.RYDO_ACCESS_TOKEN, "");
|
||||
Guid driverId = Guid.Parse(Preferences.Get(LoginResponseDto.USER_CODE, ""));
|
||||
GMCabsDriverService gmCabsDriverService = new GMCabsDriverService();
|
||||
AcceptDeclineBookingRequest acceptBookingRequest = new AcceptDeclineBookingRequest();
|
||||
|
||||
var location = await Geolocation.GetLastKnownLocationAsync();
|
||||
|
||||
acceptBookingRequest.DriverId = driverId;
|
||||
acceptBookingRequest.DriverSource = ASSISTANT_DRIVER_SOURCE;
|
||||
acceptBookingRequest.DriverLatitude = location.Latitude;
|
||||
acceptBookingRequest.DriverLongitude = location.Longitude;
|
||||
|
||||
var res = await gmCabsDriverService.AcceptBooking(acceptBookingRequest, rydoAccessToken, booking_Id);
|
||||
if (res.StatusCode == (int)HttpStatusCode.OK)
|
||||
{
|
||||
Title = "Booking Confirmed";
|
||||
IsProcessing = false;
|
||||
IsBookingConfirmed = true;
|
||||
|
||||
if (!IsFutureBooking)
|
||||
{
|
||||
IsBookingConfirmedAndOnDemand = true;
|
||||
Device.StartTimer(TimeSpan.FromSeconds(1), () =>
|
||||
{
|
||||
if (seconds > 0)
|
||||
{
|
||||
--seconds;
|
||||
TimerSeconds = seconds / 60 + ":" + (seconds % 60 <= 9 ? "0" + seconds % 60 : "" + seconds % 60);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
IsBookingConfirmedAndOnDemand = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Title = "Booking Unavailable";
|
||||
ErrorMessage = res.Message;
|
||||
IsProcessing = false;
|
||||
IsBookingConfirmed = false;
|
||||
IsBookingUnavailable = true;
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
108
GMCabsDriverAssistantSolution/Views/AcceptBookingPage.xaml
Normal file
108
GMCabsDriverAssistantSolution/Views/AcceptBookingPage.xaml
Normal file
@ -0,0 +1,108 @@
|
||||
<?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.AcceptBookingPage"
|
||||
Title="{Binding Title}">
|
||||
<ContentPage.Content>
|
||||
<StackLayout BackgroundColor="#DCDCDC">
|
||||
|
||||
<StackLayout
|
||||
IsVisible="{Binding IsProcessing}"
|
||||
VerticalOptions="CenterAndExpand">
|
||||
<Label Text="Processing"
|
||||
TextColor="Black"
|
||||
FontSize="25"
|
||||
HorizontalTextAlignment="Center"
|
||||
HorizontalOptions="CenterAndExpand" />
|
||||
<Label Text="Please Wait"
|
||||
TextColor="Black"
|
||||
FontSize="24"
|
||||
Margin="0,15,0,20"
|
||||
HorizontalTextAlignment="Center"
|
||||
HorizontalOptions="CenterAndExpand" />
|
||||
<ActivityIndicator IsRunning="true" />
|
||||
</StackLayout>
|
||||
|
||||
|
||||
<StackLayout
|
||||
VerticalOptions="Center"
|
||||
IsVisible="{Binding IsBookingConfirmed}">
|
||||
<Label
|
||||
Text="Booking Awarded"
|
||||
TextColor="Black"
|
||||
FontSize="26"
|
||||
Margin="0,40,0,0"
|
||||
HorizontalTextAlignment="Center"
|
||||
HorizontalOptions="CenterAndExpand" />
|
||||
<Image
|
||||
Source="righttic.png"
|
||||
HeightRequest="100"/>
|
||||
</StackLayout>
|
||||
|
||||
<StackLayout
|
||||
VerticalOptions="Center"
|
||||
IsVisible="{Binding IsBookingConfirmedAndOnDemand}">
|
||||
<Label
|
||||
Text="Head to"
|
||||
TextColor="Black"
|
||||
FontSize="20"
|
||||
HorizontalTextAlignment="Center"
|
||||
HorizontalOptions="CenterAndExpand" />
|
||||
<Label
|
||||
Text="Please confirm on terminal ASAP to keep this booking"
|
||||
TextColor="Black"
|
||||
Margin="40,0,40,0"
|
||||
FontSize="26"
|
||||
HorizontalTextAlignment="Center"
|
||||
HorizontalOptions="CenterAndExpand"/>
|
||||
<Label
|
||||
Text="{Binding TimerSeconds}"
|
||||
TextColor="Black"
|
||||
FontAttributes="Bold"
|
||||
Margin="0,20,0,0"
|
||||
FontSize="30"
|
||||
HorizontalOptions="CenterAndExpand"/>
|
||||
<Label
|
||||
Text="Before Automatic Cancellation"
|
||||
TextColor="Black"
|
||||
FontSize="20"
|
||||
Margin="0,20,0,0"
|
||||
HorizontalOptions="CenterAndExpand" />
|
||||
</StackLayout>
|
||||
<StackLayout VerticalOptions="EndAndExpand"
|
||||
IsVisible="{Binding IsBookingConfirmed}">
|
||||
<Button
|
||||
Margin="40,0,40,15"
|
||||
Text="OK"
|
||||
Clicked="OnAcceptOkClicked"
|
||||
FontSize="20"
|
||||
/>
|
||||
</StackLayout>
|
||||
<StackLayout
|
||||
IsVisible="{Binding IsBookingUnavailable}">
|
||||
<Label
|
||||
Text="{Binding ErrorMessage}"
|
||||
TextColor="Black"
|
||||
FontAttributes="Bold"
|
||||
FontSize="24"
|
||||
Margin="40,100,40,0"
|
||||
HorizontalTextAlignment="Center"
|
||||
HorizontalOptions="CenterAndExpand" />
|
||||
<Label
|
||||
Text="This booking is no longer available"
|
||||
HorizontalTextAlignment="Center"
|
||||
TextColor="Black"
|
||||
Margin="40,60,40,0"
|
||||
FontSize="25"/>
|
||||
<Button
|
||||
VerticalOptions="EndAndExpand"
|
||||
Margin="40,140,40,0"
|
||||
Text="OK"
|
||||
FontSize="20"
|
||||
Clicked="OnUnavailableOkClicked"/>
|
||||
</StackLayout>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
</ContentPage.Content>
|
||||
</ContentPage>
|
@ -0,0 +1,70 @@
|
||||
using GMCabsDriverAssistant.Models;
|
||||
using GMCabsDriverAssistantSolution.ViewModels;
|
||||
|
||||
namespace GMCabsDriverAssistantSolution.Views;
|
||||
|
||||
public partial class AcceptBookingPage : ContentPage
|
||||
{
|
||||
#region Fields
|
||||
[Obsolete]
|
||||
private readonly AcceptBookingViewModel _viewModel;
|
||||
#endregion
|
||||
[Obsolete]
|
||||
public AcceptBookingPage()
|
||||
{
|
||||
BindingContext = _viewModel = new AcceptBookingViewModel();
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
protected override bool OnBackButtonPressed()
|
||||
{
|
||||
NavigateToHomePage(false);
|
||||
base.OnBackButtonPressed();
|
||||
return true;
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
protected override void OnDisappearing()
|
||||
{
|
||||
NavigateToHomePage(false);
|
||||
base.OnDisappearing();
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
private void OnAcceptOkClicked(object sender, EventArgs e)
|
||||
{
|
||||
NavigateToHomePage(true);
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
private async void NavigateToHomePage(bool isOkPressed)
|
||||
{
|
||||
AcceptBookingTimerDto acceptBookingTimerDto = new AcceptBookingTimerDto();
|
||||
|
||||
if (!_viewModel.isFutureBooking)
|
||||
{
|
||||
acceptBookingTimerDto.PendingSeconds = _viewModel.seconds;
|
||||
acceptBookingTimerDto.PickUPAddress = _viewModel.pickUpAddress;
|
||||
acceptBookingTimerDto.DropUpAddress = _viewModel.dropUpAddress;
|
||||
}
|
||||
else
|
||||
{
|
||||
acceptBookingTimerDto.PendingSeconds = 0;
|
||||
acceptBookingTimerDto.PickUPAddress = string.Empty;
|
||||
acceptBookingTimerDto.DropUpAddress = string.Empty;
|
||||
}
|
||||
|
||||
if (!_viewModel.isBookingUnavailable && !isOkPressed)
|
||||
{
|
||||
MessagingCenter.Send(this, nameof(AcceptBookingPage), acceptBookingTimerDto);
|
||||
}
|
||||
|
||||
await Shell.Current.GoToAsync($"//{nameof(HomePage)}");
|
||||
|
||||
}
|
||||
private async void OnUnavailableOkClicked(object sender, EventArgs e)
|
||||
{
|
||||
await Navigation.PushAsync(new BookingsPage(null, null));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user