using GMCabsDriverAssistant.Models;
|
|
using GMCabsDriverAssistant.Services;
|
|
using GMCabsDriverAssistantSolution.Models.Rydo;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace GMCabsDriverAssistantSolution.ViewModels
|
|
{
|
|
public class AcceptedFutureBookingsViewModel : BaseViewModel
|
|
{
|
|
#region Fields
|
|
private string emptyViewMessage;
|
|
|
|
private string startSuburb;
|
|
|
|
private string endSuburb;
|
|
|
|
private float distance;
|
|
//private string formattedDistance;
|
|
|
|
private bool isFutureBooking;
|
|
|
|
private BookingDto _selectedBooking;
|
|
#endregion
|
|
|
|
#region Properties
|
|
public string EmptyViewMessage
|
|
{
|
|
get => emptyViewMessage;
|
|
set => SetProperty(ref emptyViewMessage, value);
|
|
}
|
|
public string StartSuburb
|
|
{
|
|
get => startSuburb;
|
|
set => SetProperty(ref startSuburb, value);
|
|
}
|
|
|
|
public string EndSuburb
|
|
{
|
|
get => endSuburb;
|
|
set => SetProperty(ref endSuburb, value);
|
|
}
|
|
|
|
public float Distance
|
|
{
|
|
get => distance;
|
|
set => SetProperty(ref distance, value);
|
|
}
|
|
|
|
public bool IsFutureBooking
|
|
{
|
|
get => isFutureBooking;
|
|
set => SetProperty(ref isFutureBooking, value);
|
|
}
|
|
|
|
public BookingDto SelectedBooking
|
|
{
|
|
get => _selectedBooking;
|
|
set
|
|
{
|
|
SetProperty(ref _selectedBooking, value);
|
|
OnFutureBookingSelected(value);
|
|
}
|
|
}
|
|
|
|
public ObservableCollection<BookingDto> FutureBookings { get; }
|
|
public Command<BookingDto> BookingTapped { get; }
|
|
public Command OnRefreshClicked { get; }
|
|
#endregion
|
|
|
|
#region Constructor
|
|
public AcceptedFutureBookingsViewModel()
|
|
{
|
|
Title = "Accepted Bookings";
|
|
FutureBookings = new ObservableCollection<BookingDto>();
|
|
OnRefreshClicked = new Command(async () => { await GetRydoFutureBookings(); });
|
|
BookingTapped = new Command<BookingDto>(OnFutureBookingSelected);
|
|
}
|
|
#endregion
|
|
|
|
#region Methods
|
|
public void OnAppearing()
|
|
{
|
|
//IsBusy = true;
|
|
SelectedBooking = null;
|
|
Task.Run(async () =>
|
|
{
|
|
await GetRydoFutureBookings();
|
|
});
|
|
}
|
|
|
|
private async Task GetRydoFutureBookings()
|
|
{
|
|
EmptyViewMessage = "Loading Future Bookings...";
|
|
string rydoAccessToken = Preferences.Get(EftposLoginResponse.RYDO_ACCESS_TOKEN, "");
|
|
Guid driverId = Guid.Parse(Preferences.Get(LoginResponseDto.USER_CODE, ""));
|
|
GMCabsDriverService gmCabsDriverService = new GMCabsDriverService();
|
|
FutureBookings.Clear();
|
|
var bookings = await gmCabsDriverService.GetAcceptedFutureBookings(rydoAccessToken, driverId);
|
|
var futureBookings = bookings.Where(b => b.FutureBooking == true);
|
|
if (futureBookings.Count() > 0)
|
|
{
|
|
foreach (BookingDto booking in futureBookings)
|
|
{
|
|
FutureBookings.Add(booking);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
EmptyViewMessage = "No Future Bookings available";
|
|
}
|
|
}
|
|
|
|
async void OnFutureBookingSelected(BookingDto booking)
|
|
{
|
|
if (booking == null) return;
|
|
|
|
// await Shell.Current.GoToAsync($"{nameof(AcceptedFutureBookingDetailPage)}?{nameof(AcceptedFutureBookingDetailViewModel.BookingId)}={booking.BookingId:N}");
|
|
}
|
|
#endregion
|
|
}
|
|
}
|