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.

127 lines
3.8 KiB

1 year ago
1 year ago
1 year ago
  1. using GMCabsDriverAssistant.Models;
  2. using GMCabsDriverAssistant.Services;
  3. using GMCabsDriverAssistantSolution.Models.Rydo;
  4. using GMCabsDriverAssistantSolution.Views;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Collections.ObjectModel;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace GMCabsDriverAssistantSolution.ViewModels
  12. {
  13. public class AcceptedFutureBookingsViewModel : BaseViewModel
  14. {
  15. #region Fields
  16. private string emptyViewMessage;
  17. private string startSuburb;
  18. private string endSuburb;
  19. private float distance;
  20. //private string formattedDistance;
  21. private bool isFutureBooking;
  22. private BookingDto _selectedBooking;
  23. #endregion
  24. #region Properties
  25. public string EmptyViewMessage
  26. {
  27. get => emptyViewMessage;
  28. set => SetProperty(ref emptyViewMessage, value);
  29. }
  30. public string StartSuburb
  31. {
  32. get => startSuburb;
  33. set => SetProperty(ref startSuburb, value);
  34. }
  35. public string EndSuburb
  36. {
  37. get => endSuburb;
  38. set => SetProperty(ref endSuburb, value);
  39. }
  40. public float Distance
  41. {
  42. get => distance;
  43. set => SetProperty(ref distance, value);
  44. }
  45. public bool IsFutureBooking
  46. {
  47. get => isFutureBooking;
  48. set => SetProperty(ref isFutureBooking, value);
  49. }
  50. public BookingDto SelectedBooking
  51. {
  52. get => _selectedBooking;
  53. set
  54. {
  55. SetProperty(ref _selectedBooking, value);
  56. OnFutureBookingSelected(value);
  57. }
  58. }
  59. public ObservableCollection<BookingDto> FutureBookings { get; }
  60. public Command<BookingDto> BookingTapped { get; }
  61. public Command OnRefreshClicked { get; }
  62. #endregion
  63. #region Constructor
  64. public AcceptedFutureBookingsViewModel()
  65. {
  66. Title = "Accepted Bookings";
  67. FutureBookings = new ObservableCollection<BookingDto>();
  68. OnRefreshClicked = new Command(async () => { await GetRydoFutureBookings(); });
  69. BookingTapped = new Command<BookingDto>(OnFutureBookingSelected);
  70. }
  71. #endregion
  72. #region Methods
  73. public void OnAppearing()
  74. {
  75. //IsBusy = true;
  76. SelectedBooking = null;
  77. Task.Run(async () =>
  78. {
  79. await GetRydoFutureBookings();
  80. });
  81. }
  82. private async Task GetRydoFutureBookings()
  83. {
  84. EmptyViewMessage = "Loading Future Bookings...";
  85. string rydoAccessToken = Preferences.Get(EftposLoginResponse.RYDO_ACCESS_TOKEN, "");
  86. Guid driverId = Guid.Parse(Preferences.Get(LoginResponseDto.USER_CODE, ""));
  87. GMCabsDriverService gmCabsDriverService = new GMCabsDriverService();
  88. FutureBookings.Clear();
  89. var bookings = await gmCabsDriverService.GetAcceptedFutureBookings(rydoAccessToken, driverId);
  90. var futureBookings = bookings.Where(b => b.FutureBooking == true);
  91. if (futureBookings.Count() > 0)
  92. {
  93. foreach (BookingDto booking in futureBookings)
  94. {
  95. FutureBookings.Add(booking);
  96. }
  97. }
  98. else
  99. {
  100. EmptyViewMessage = "No Future Bookings available";
  101. }
  102. }
  103. async void OnFutureBookingSelected(BookingDto booking)
  104. {
  105. if (booking == null) return;
  106. await Shell.Current.GoToAsync($"{nameof(AcceptedFutureBookingDetailPage)}?{nameof(AcceptedFutureBookingDetailViewModel.BookingId)}={booking.BookingId:N}");
  107. }
  108. #endregion
  109. }
  110. }