You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

176 lines
5.4 KiB

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
}
}