using GMCabsDriverAssistant.Enums;
|
|
using GMCabsDriverAssistant.Services;
|
|
using GMCabsDriverAssistantSolution.Models.Rydo;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace GMCabsDriverAssistantSolution.ViewModels
|
|
{
|
|
[QueryProperty(nameof(BookingId), nameof(BookingId))]
|
|
class AcceptedFutureBookingDetailViewModel : BaseViewModel
|
|
{
|
|
#region Fields
|
|
private string _bookingId;
|
|
|
|
private float distance;
|
|
|
|
private string formattedDistance;
|
|
|
|
private string startAddress;
|
|
|
|
private string startSuburb;
|
|
|
|
private string endAddress;
|
|
|
|
private string endSuburb;
|
|
|
|
private string rewardPoints;
|
|
|
|
private double bookingFee;
|
|
|
|
private bool isCorporateBooking;
|
|
|
|
private string fareTypeValue;
|
|
|
|
private int? fixedAmount;
|
|
|
|
private bool isFutureBooking;
|
|
|
|
private int pickUpTime;
|
|
|
|
private string formattedPickUpTime;
|
|
private string formattedPickUpTimeDateOnly;
|
|
private string formattedPickUpTimeTimeOnly;
|
|
#endregion
|
|
|
|
#region Properties
|
|
public string BookingId
|
|
{
|
|
get => _bookingId;
|
|
set
|
|
{
|
|
_bookingId = value;
|
|
LoadAcceptedFutureBooking(Guid.Parse(value));
|
|
}
|
|
}
|
|
|
|
public float Distance
|
|
{
|
|
get => distance;
|
|
set => SetProperty(ref distance, value);
|
|
}
|
|
|
|
public string FormattedDistance
|
|
{
|
|
get => (distance >= 1000) ? $"{distance / 1000:0.##}k" : $"{(int)distance}m";
|
|
set => SetProperty(ref formattedDistance, value);
|
|
}
|
|
|
|
public string StartAddress
|
|
{
|
|
get => startAddress;
|
|
set => SetProperty(ref startAddress, value);
|
|
}
|
|
|
|
public string StartSuburb
|
|
{
|
|
get => startSuburb;
|
|
set => SetProperty(ref startSuburb, value);
|
|
}
|
|
|
|
public string EndAddress
|
|
{
|
|
get => endAddress;
|
|
set => SetProperty(ref endAddress, value);
|
|
}
|
|
|
|
public string EndSuburb
|
|
{
|
|
get => endSuburb;
|
|
set => SetProperty(ref endSuburb, value);
|
|
}
|
|
|
|
public string RewardPoints
|
|
{
|
|
get => rewardPoints;
|
|
set => SetProperty(ref rewardPoints, value);
|
|
}
|
|
|
|
public double BookingFee
|
|
{
|
|
get => bookingFee;
|
|
set => SetProperty(ref bookingFee, value);
|
|
}
|
|
|
|
public bool IsCorporateBooking
|
|
{
|
|
get => isCorporateBooking;
|
|
set => SetProperty(ref isCorporateBooking, value);
|
|
}
|
|
|
|
public string FareTypeValue
|
|
{
|
|
get => fareTypeValue;
|
|
set => SetProperty(ref fareTypeValue, value);
|
|
}
|
|
|
|
public int? FixedAmount
|
|
{
|
|
get => fixedAmount;
|
|
set => SetProperty(ref fixedAmount, value);
|
|
}
|
|
public bool IsFutureBooking
|
|
{
|
|
get => isFutureBooking;
|
|
set => SetProperty(ref isFutureBooking, value);
|
|
}
|
|
|
|
public int PickUpTime
|
|
{
|
|
get => pickUpTime;
|
|
set => SetProperty(ref pickUpTime, value);
|
|
}
|
|
public string FormattedPickUpTime
|
|
{
|
|
get
|
|
{
|
|
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
|
|
dateTime = dateTime.AddSeconds(pickUpTime).ToLocalTime();
|
|
return dateTime.ToString("dd/MM/yyyy hh:mm tt");
|
|
}
|
|
set => SetProperty(ref formattedPickUpTime, value);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
public AcceptedFutureBookingDetailViewModel()
|
|
{
|
|
Title = "Accepted Future Booking Detail";
|
|
}
|
|
#endregion
|
|
|
|
#region Methods
|
|
public async void LoadAcceptedFutureBooking(Guid bookingId)
|
|
{
|
|
string rydoAccessToken = Preferences.Get(EftposLoginResponse.RYDO_ACCESS_TOKEN, "");
|
|
GMCabsDriverService gmCabsDriverService = new GMCabsDriverService();
|
|
var booking = await gmCabsDriverService.GetBookingDetails(rydoAccessToken, bookingId);
|
|
if (booking.BookingId == Guid.Empty)
|
|
{
|
|
await Shell.Current.GoToAsync("..");
|
|
}
|
|
|
|
Distance = booking.Distance;
|
|
FormattedDistance = booking.Distance.ToString();
|
|
StartAddress = booking.StartAddress;
|
|
StartSuburb = booking.StartSuburb;
|
|
EndAddress = booking.EndAddress;
|
|
EndSuburb = booking.EndSuburb;
|
|
IsCorporateBooking = booking.IsCorporate;
|
|
FixedAmount = booking.FixedAmount;
|
|
IsFutureBooking = booking.FutureBooking;
|
|
PickUpTime = booking.PickupTime;
|
|
FormattedPickUpTime = booking.PickupTime.ToString();
|
|
BookingFee = 0;
|
|
|
|
if (FixedAmount != null)
|
|
{
|
|
decimal amount = (decimal)(FixedAmount / 100.0);
|
|
FareTypeValue = "$" + amount;
|
|
}
|
|
else
|
|
{
|
|
FareTypeValue = "METER";
|
|
}
|
|
|
|
RewardPoints = booking.RydoStars > 0 ? string.Format($"+{booking.RydoStars}") : booking.RydoStars.ToString();
|
|
|
|
var preferredDriver = booking.PriorityDriver;
|
|
if (preferredDriver)
|
|
{
|
|
if (booking.FareType == FareType.Fixed)
|
|
{
|
|
if (booking.FixedAmount > booking.MinFareAmount)
|
|
{
|
|
BookingFee = booking.ProviderChargeFixedFarePreferred.Value;
|
|
}
|
|
}
|
|
else if (booking.FareType == FareType.Meter)
|
|
{
|
|
BookingFee = booking.ProviderChargeMeterFarePreferred.Value;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (booking.FareType == FareType.Fixed)
|
|
{
|
|
if (booking.FixedAmount > booking.MinFareAmount)
|
|
{
|
|
BookingFee = booking.ProviderChargeFixedFare.Value;
|
|
}
|
|
}
|
|
else if (booking.FareType == FareType.Meter)
|
|
{
|
|
BookingFee = booking.ProviderChargeMeterFare.Value;
|
|
}
|
|
}
|
|
}
|
|
|
|
public async Task OnDeclineBookingClickedAsync()
|
|
{
|
|
string rydoAccessToken = Preferences.Get(EftposLoginResponse.RYDO_ACCESS_TOKEN, "");
|
|
GMCabsDriverService gmCabsDriverService = new GMCabsDriverService();
|
|
var result = await gmCabsDriverService.DeclineFutureBooking(rydoAccessToken, _bookingId);
|
|
if (result)
|
|
{
|
|
await Shell.Current.GoToAsync("../AcceptedFutureBookingsPage");
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|