177 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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
 | 
						|
    }
 | 
						|
}
 |