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