@ -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 | |||
} | |||
} |
@ -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)); | |||
} | |||
} |