using GMCabsDriverAssistant.Enums;
|
|
using GMCabsDriverAssistant.Models;
|
|
using GMCabsDriverAssistant.Models.Rydo;
|
|
using GMCabsDriverAssistant.Utils;
|
|
using GMCabsDriverAssistantSolution.Models.Rydo;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Headers;
|
|
using System.Text;
|
|
using System.Text.Json;
|
|
using System.Threading.Tasks;
|
|
using static GMCabsDriverAssistant.Constants;
|
|
|
|
namespace GMCabsDriverAssistant.Services
|
|
{
|
|
public class GMCabsDriverService
|
|
{
|
|
#region Fields
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
#endregion
|
|
|
|
#region Constructor
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
public async Task<ValidateTokenResponseDto> ValidateAuthToken(string token, string fcmToken)
|
|
{
|
|
|
|
ValidateTokenResponseDto validateTokenResponseDto = new ValidateTokenResponseDto();
|
|
Uri uri = new Uri($"{BASE_URL}/Auth/ValidateToken");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(new { token, fcmToken });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
validateTokenResponseDto = JsonSerializer.Deserialize<ValidateTokenResponseDto>(responseData, options);
|
|
}
|
|
return validateTokenResponseDto;
|
|
}
|
|
public async Task<LoginResponseDto> Login(LoginRequestDto loginRequestDto)
|
|
{
|
|
LoginResponseDto loginResponseDto = new LoginResponseDto();
|
|
try
|
|
{
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Auth/Login", string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(loginRequestDto);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
loginResponseDto = JsonSerializer.Deserialize<LoginResponseDto>(responseData, options);
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
// DO Nothing
|
|
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
//TODO
|
|
return loginResponseDto;
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.Unauthorized)
|
|
{
|
|
//TODO
|
|
return loginResponseDto;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
throw ex;
|
|
}
|
|
return loginResponseDto;
|
|
}
|
|
public async Task<EftposLoginResponse> EftposLogin(EftposLoginRequest eftposLoginRequest)
|
|
{
|
|
EftposLoginResponse eftposLoginResponse = new EftposLoginResponse();
|
|
|
|
Uri uri = new Uri(string.Format(BASE_URL_RYDO_API + "/v1/account/eftpos-login", string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(eftposLoginRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
eftposLoginResponse = JsonSerializer.Deserialize<EftposLoginResponse>(responseData, options);
|
|
}
|
|
return eftposLoginResponse;
|
|
}
|
|
public async Task<UnreadCountResponseDto> GetUnreadNotificationCount(string appToken)
|
|
{
|
|
UnreadCountResponseDto unreadCountResponse = new UnreadCountResponseDto();
|
|
var unreadNotificationCount = 0;
|
|
|
|
Uri uri = new Uri($"{BASE_URL}/Notifications/UnreadCount?token={appToken}");
|
|
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
unreadNotificationCount = JsonSerializer.Deserialize<int>(responseData, options);
|
|
|
|
unreadCountResponse.StatusCode = Constant.SUCCESS_CODE;
|
|
unreadCountResponse.UnreadNotificationCount = unreadNotificationCount;
|
|
}
|
|
else
|
|
{
|
|
if (response.StatusCode == HttpStatusCode.Unauthorized)
|
|
{
|
|
unreadCountResponse.StatusCode = Constant.UNAUTHORIZED_CODE;
|
|
unreadCountResponse.UnreadNotificationCount = unreadNotificationCount;
|
|
}
|
|
else
|
|
{
|
|
unreadCountResponse.StatusCode = Constant.BADREQUEST_CODE;
|
|
unreadCountResponse.UnreadNotificationCount = unreadNotificationCount;
|
|
}
|
|
}
|
|
|
|
return unreadCountResponse;
|
|
}
|
|
public async Task<List<Guid>> GetBookingAvailableCount(string accessToken, string driverId, double lat, double lng)
|
|
{
|
|
List<Guid> bookingIDs = null;
|
|
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{driverId}/available?latitude={lat}&longitude={lng}");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
List<BookingDto> bookings = JsonSerializer.Deserialize<List<BookingDto>>(responseData);
|
|
if (bookings != null)
|
|
{
|
|
bookingIDs = new List<Guid>();
|
|
foreach (BookingDto booking in bookings) { bookingIDs.Add(booking.BookingId); }
|
|
}
|
|
}
|
|
return bookingIDs;
|
|
}
|
|
public async Task<List<CouponDto>> GetCoupons(string appToken)
|
|
{
|
|
List<CouponDto> coupons = new List<CouponDto>();
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Coupons?token=" + appToken, string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
coupons = JsonSerializer.Deserialize<List<CouponDto>>(responseData, options);
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
//TODO
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.Unauthorized)
|
|
{
|
|
//TODO
|
|
}
|
|
|
|
return coupons;
|
|
}
|
|
public async Task<List<CouponHistoryDto>> GetCouponsHistory(string appToken)
|
|
{
|
|
List<CouponHistoryDto> couponsHistory = new List<CouponHistoryDto>();
|
|
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Coupons/History?token=" + appToken, string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
couponsHistory = JsonSerializer.Deserialize<List<CouponHistoryDto>>(responseData, options);
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
//TODO
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.Unauthorized)
|
|
{
|
|
//TODO
|
|
}
|
|
|
|
return couponsHistory;
|
|
}
|
|
public async Task<List<NotificationDto>> GetNotifications(string appToken)
|
|
{
|
|
List<NotificationDto> notifications = new List<NotificationDto>();
|
|
try
|
|
{
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Notifications?token=" + appToken, string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage respose = await _httpClient.GetAsync(uri);
|
|
if (respose != null)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await respose.Content.ReadAsStringAsync();
|
|
notifications = JsonSerializer.Deserialize<List<NotificationDto>>(responseData, options);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
return notifications;
|
|
}
|
|
public async Task<bool> MarkNotificationAsViewed(string appToken, string notificationId)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/Notifications/NotificationViewed/{notificationId}?token={appToken}");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
|
|
var response = await _httpClient.PutAsync(uri, null);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<List<BookingDto>> GetBookings(string accessToken, Guid driverId, double lat, double lng)
|
|
{
|
|
List<BookingDto> bookings = new List<BookingDto>();
|
|
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{driverId}/available?latitude={lat}&longitude={lng}");
|
|
Debug.WriteLine(uri);
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
bookings = JsonSerializer.Deserialize<List<BookingDto>>(responseData);
|
|
//if (bookings.Count <= 0)
|
|
//{
|
|
// uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{driverId}/available?future_bookings=1");
|
|
// _httpClient = new HttpClient();
|
|
// _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
// response = await _httpClient.GetAsync(uri);
|
|
// if (response.IsSuccessStatusCode)
|
|
// {
|
|
// var featureResponseData = await response.Content.ReadAsStringAsync();
|
|
// bookings = JsonSerializer.Deserialize<List<BookingDto>>(featureResponseData);
|
|
// }
|
|
|
|
//}
|
|
}
|
|
bookings = bookings.OrderBy(x => x.FormmattedPickUpDateTime).ToList();
|
|
return await Task.FromResult(bookings);
|
|
}
|
|
public async Task<AcceptDeclineBookingResponse> AcceptBooking(AcceptDeclineBookingRequest acceptBookingRequest, string accessToken, string bookingId)
|
|
{
|
|
AcceptDeclineBookingResponse acceptBookingResponse = new AcceptDeclineBookingResponse();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/accept");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(acceptBookingRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PutAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
acceptBookingResponse = JsonSerializer.Deserialize<AcceptDeclineBookingResponse>(responseData, options);
|
|
}
|
|
acceptBookingResponse.StatusCode = (int)response.StatusCode;
|
|
acceptBookingResponse.Message = (string)response.ReasonPhrase;
|
|
return acceptBookingResponse;
|
|
}
|
|
public async Task<AcceptDeclineBookingResponse> DeclineBooking(AcceptDeclineBookingRequest declineBookingRequest, string accessToken, string bookingId)
|
|
{
|
|
AcceptDeclineBookingResponse declineBookingResponse = new AcceptDeclineBookingResponse();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/decline");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(declineBookingRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PutAsync(uri, content);
|
|
declineBookingResponse.StatusCode = (int)response.StatusCode;
|
|
declineBookingResponse.Message = (string)response.ReasonPhrase;
|
|
|
|
return declineBookingResponse;
|
|
}
|
|
public async Task<int> SendDriverLocation(string appToken, LocationUpdateRequestDto locationUpdateRequestDto)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/DriverAssistantApp/UpdateLocation?token={appToken}");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(locationUpdateRequestDto);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
|
|
return (int)response.StatusCode;
|
|
}
|
|
public async Task<int> SendDriverLocationTablet(LocationUpdateRequestDto locationUpdateRequestDto)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/DriverAssistantApp/UpdateLocationTablet");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(locationUpdateRequestDto);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
|
|
return (int)response.StatusCode;
|
|
}
|
|
public async Task<bool> UpdateSilentModeSetting(string appToken, SilentModeSettingRequest request)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/DriverAssistantApp/UpdateDriverAppSilentModeSetting?token={appToken}");
|
|
string json = JsonSerializer.Serialize(request);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<List<BookingDto>> GetAcceptedFutureBookings(string accessToken, Guid driverId)
|
|
{
|
|
List<BookingDto> bookings = new List<BookingDto>();
|
|
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{driverId}/accepted");
|
|
Debug.WriteLine(uri);
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
bookings = JsonSerializer.Deserialize<List<BookingDto>>(responseData);
|
|
}
|
|
return await Task.FromResult(bookings);
|
|
}
|
|
public async Task<BookingDto> GetBookingDetails(string accessToken, Guid bookingId)
|
|
{
|
|
BookingDto booking = new BookingDto();
|
|
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/details");
|
|
Debug.WriteLine(uri);
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
booking = JsonSerializer.Deserialize<BookingDto>(responseData);
|
|
}
|
|
|
|
return await Task.FromResult(booking);
|
|
}
|
|
public async Task<BookingDto> GetAcceptedOnDemandBookingForDriver(string accessToken, Guid driverId)
|
|
{
|
|
List<BookingDto> booking = new List<BookingDto>();
|
|
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{driverId}/accepted");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
booking = JsonSerializer.Deserialize<List<BookingDto>>(responseData);
|
|
}
|
|
|
|
// there can be only on accepted on demand booking so the below result will either be the only entry or null
|
|
return await Task.FromResult(booking.FirstOrDefault());
|
|
}
|
|
public async Task<bool> UpdateProfile(string appToken, MultipartFormDataContent content)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/Driver/UpdateDriverDetails?token={appToken}");
|
|
Debug.WriteLine(uri);
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<bool> GenerateOtp(string mobileNumber)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/Auth/GenerateOtp?mobileNumber={mobileNumber}");
|
|
Debug.WriteLine(uri);
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, null);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<bool> VerifyOtp(string mobileNumber, string otp)
|
|
{
|
|
var isOtpValid = false;
|
|
|
|
Uri uri = new Uri($"{BASE_URL}/Auth/VerifyOtp");
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(new { mobileNumber, otp });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
isOtpValid = bool.Parse(responseData);
|
|
}
|
|
|
|
return isOtpValid;
|
|
}
|
|
public async Task<bool> UpdateDriverPin(string mobileNumber, int pin)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/Auth/UpdateDriverPin");
|
|
Debug.WriteLine(uri);
|
|
|
|
string json = JsonSerializer.Serialize(new { mobileNumber, pin });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<string> CouponScan(string appToken, string couponText)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/Driver/CouponScan?token={appToken}");
|
|
string json = JsonSerializer.Serialize(new { couponText });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
var status = await response.Content.ReadAsStringAsync();
|
|
return status.ToString();
|
|
}
|
|
public async Task<int> VoucherScanedCount(string appToken, DateTime reportingDate)
|
|
{
|
|
var voucherScanedCount = 0;
|
|
|
|
Uri uri = new Uri($"{BASE_URL}/Coupons/VouchersScannedCount?token={appToken}");
|
|
string json = JsonSerializer.Serialize(new { reportingDate });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
voucherScanedCount = JsonSerializer.Deserialize<int>(responseData, options);
|
|
}
|
|
|
|
return voucherScanedCount;
|
|
}
|
|
public async Task<bool> LogoutDriverApp(string appToken, double lastLat, double lastLng)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/Auth/Logout?token={appToken}&lastLat={lastLat}&lastLng={lastLng}");
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PostAsync(uri, content);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<bool> DeclineFutureBooking(string accessToken, String bookingId)
|
|
{
|
|
bool result = false;
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/release");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
StringContent content = new StringContent("", Encoding.UTF8, "application/json");
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PutAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
result = true;
|
|
}
|
|
return result;
|
|
}
|
|
public async Task<bool> CreateLightDriver(CreateLightDriverRequest createLightDriverRequest)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Auth/CreateLightDriver", string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(createLightDriverRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
result= true;
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
//TODO
|
|
result= false;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = false;
|
|
}
|
|
return result;
|
|
}
|
|
public async Task<LocationVoucherDto> GetLocationVoucherByLocationID(string appToken, int issuedFromLocationID)
|
|
{
|
|
LocationVoucherDto locationVoucher = new LocationVoucherDto();
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Coupons/GetLocationVoucherByLocationID?token=" + appToken+ "&issuedFromLocationID=" + issuedFromLocationID, string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
locationVoucher = JsonSerializer.Deserialize<LocationVoucherDto>(responseData, options);
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
//TODO
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.Unauthorized)
|
|
{
|
|
//TODO
|
|
}
|
|
|
|
return locationVoucher;
|
|
}
|
|
public async Task<bool> ValidateAdminPassword(string adminPassword)
|
|
{
|
|
var isValidAdminPassword = false;
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Auth/ValidateAdminPassword?adminPassword=" + adminPassword));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
isValidAdminPassword = true;
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
isValidAdminPassword = false;
|
|
}
|
|
|
|
return isValidAdminPassword;
|
|
}
|
|
public async Task<bool> ValidateTaxiNumberInstallation(string taxiNumber)
|
|
{
|
|
var isValidAdminPassword = false;
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/DriverAssistantApp/ValidateTaxiNumberInstallation?taxiNumber=" + taxiNumber));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
isValidAdminPassword = true;
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.BadRequest)
|
|
{
|
|
isValidAdminPassword = false;
|
|
}
|
|
|
|
return isValidAdminPassword;
|
|
}
|
|
public async Task<StartRideResponse> StartRiding(StartRideRequest startRideRequest, string accessToken, string bookingId)
|
|
{
|
|
StartRideResponse startRideResponse = new StartRideResponse();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/start-ride");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(startRideRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PutAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
startRideResponse = JsonSerializer.Deserialize<StartRideResponse>(responseData, options);
|
|
}
|
|
startRideResponse.StatusCode = (int)response.StatusCode;
|
|
startRideResponse.Message = (string)response.ReasonPhrase;
|
|
return startRideResponse;
|
|
}
|
|
public async Task<ApiResponseDto> SendMessage(MessageRequest messageRequest, string accessToken, string bookingId)
|
|
{
|
|
ApiResponseDto apiResponseDto = new ApiResponseDto();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/message");
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(messageRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
var response = await _httpClient.PostAsync(uri, content);
|
|
apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
apiResponseDto.Message = (string)response.ReasonPhrase;
|
|
return apiResponseDto;
|
|
}
|
|
public async Task<ApiResponseDto> ReleaseBooking(string accessToken, string bookingId)
|
|
{
|
|
ApiResponseDto apiResponseDto = new ApiResponseDto();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/release");
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
apiResponseDto.Message = (string)response.ReasonPhrase;
|
|
return apiResponseDto;
|
|
}
|
|
public async Task<ApiResponseDto> NoShowBooking(string accessToken, string bookingId)
|
|
{
|
|
ApiResponseDto apiResponseDto = new ApiResponseDto();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/no-show");
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
apiResponseDto.Message = (string)response.ReasonPhrase;
|
|
return apiResponseDto;
|
|
}
|
|
public async Task<int> NotifyStop(int stopNumber, string accessToken, string bookingId)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/notify-stop?stop_number={stopNumber}");
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PutAsync(uri, content);
|
|
return (int)response.StatusCode;
|
|
}
|
|
public async Task<ApiResponseDto> EndRiding(EndRideRequestDto endRideRequestDto, string accessToken, string bookingId)
|
|
{
|
|
ApiResponseDto apiResponseDto = new ApiResponseDto();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/end-ride");
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(endRideRequestDto);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
apiResponseDto.Message = (string)response.ReasonPhrase;
|
|
return apiResponseDto;
|
|
}
|
|
public async Task<ApiResponseDto> MakePaymentAtTerminal(string bookingId, string driverId, int amount)
|
|
{
|
|
ApiResponseDto apiResponseDto = new ApiResponseDto();
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Terminal/PayAtTerminal?bookingID=" + bookingId + "&driverID=" + driverId + "&amount=" + amount));
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
apiResponseDto.Message = (string)response.ReasonPhrase;
|
|
return apiResponseDto;
|
|
}
|
|
public async Task<bool> CloseAccountDriverApp(string appToken)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/Driver/CloseAccount?token={appToken}");
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<string> UpdateBookingStatus(string appToken, int statusFlag, bool isMetered)
|
|
{
|
|
Uri uri = new Uri(string.Format(BASE_URL + $"/DriverAssistantApp/MeterTripStatus?token={appToken}&statusFlag={statusFlag}&isMetered={isMetered}"));
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
var suburbName = (response.StatusCode == HttpStatusCode.OK) ? await response.Content.ReadAsStringAsync() : String.Empty;
|
|
return suburbName.ToString();
|
|
}
|
|
public async Task<bool> DriverDistress(string appToken, double lat, double lng)
|
|
{
|
|
bool result = false;
|
|
Uri uri = new Uri(string.Format(BASE_URL + $"/DriverAssistantApp/DriverDistress?token={appToken}&lat={lat}&lng={lng}"));
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
result = true;
|
|
}
|
|
return result;
|
|
}
|
|
public async Task<bool> RequestPayment(string appToken, int amount)
|
|
{
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/DriverAssistantApp/RequestPayment?token=" + appToken + "&amount=" + amount));
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
public async Task<List<ImeiDto>> GetAvailableImeiNumbers(string enteredValue)
|
|
{
|
|
List<ImeiDto> imeiNumers = null;
|
|
Uri uri = new Uri($"{BASE_URL}/TabletDevice/UninstalledImeis?enteredValue={enteredValue}");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
if (responseData != string.Empty)
|
|
{
|
|
imeiNumers = JsonSerializer.Deserialize<List<ImeiDto>>(responseData,options);
|
|
}
|
|
}
|
|
return imeiNumers;
|
|
}
|
|
// now done on logon
|
|
//public async Task<bool> CompleteInstallation(string imeiValue)
|
|
//{
|
|
// bool result = false;
|
|
// Uri uri = new Uri($"{BASE_URL}/TabletDevice/CompleteTabletInstall?imei={imeiValue}");
|
|
// string json = JsonSerializer.Serialize(new { });
|
|
// StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
// HttpClient _httpClient = new HttpClient();
|
|
// var response = await _httpClient.PutAsync(uri, content);
|
|
|
|
// if (response.IsSuccessStatusCode)
|
|
// {
|
|
// // need to handle a false in content result which means some other device has already been installed in the selected taxi
|
|
|
|
// result = true;
|
|
// }
|
|
// return result;
|
|
//}
|
|
public async Task<List<TripsBookingResponse>> GetTripDetails(string appToken)
|
|
{
|
|
List<TripsBookingResponse> tripsBookingResponses = new List<TripsBookingResponse>();
|
|
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/DriverAssistantApp/Trips?token=" + appToken));
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
tripsBookingResponses = JsonSerializer.Deserialize<List<TripsBookingResponse>>(responseData, options);
|
|
}
|
|
|
|
return tripsBookingResponses;
|
|
}
|
|
public async Task<AccountBalanceDto> GetLevyBalance(string appToken)
|
|
{
|
|
AccountBalanceDto accountBalanceDto = new AccountBalanceDto();
|
|
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/Driver/AccountBalance?token=" + appToken));
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
accountBalanceDto = JsonSerializer.Deserialize<AccountBalanceDto>(responseData, options);
|
|
}
|
|
|
|
return accountBalanceDto;
|
|
}
|
|
public async Task<DriverRatingResponse> GetDriverRatings(string accessToken, string driverId, string phoneNumber)
|
|
{
|
|
DriverRatingResponse driverRatingResponse = new DriverRatingResponse();
|
|
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/drivers?id={driverId}&phone_number={phoneNumber}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
driverRatingResponse = JsonSerializer.Deserialize<DriverRatingResponse>(responseData, options);
|
|
}
|
|
return driverRatingResponse;
|
|
}
|
|
public async Task<List<ShiftResponseDto>> GetShiftDetails(string appToken)
|
|
{
|
|
List<ShiftResponseDto> shiftResponses = new List<ShiftResponseDto>();
|
|
|
|
Uri uri = new Uri(string.Format(BASE_URL + "/DriverAssistantApp/Shifts?token=" + appToken));
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
shiftResponses = JsonSerializer.Deserialize<List<ShiftResponseDto>>(responseData, options);
|
|
}
|
|
|
|
return shiftResponses;
|
|
}
|
|
|
|
public async Task<List<PlotResponseDto>> GetAvailablePlot(string accessToken, string driverId, double lat, double lng)
|
|
{
|
|
List<PlotResponseDto> plotResponses = new List<PlotResponseDto>();
|
|
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/available-plot?driver_id={driverId}&lat={lat}&lng={lng}");
|
|
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.GetAsync(uri);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
plotResponses = JsonSerializer.Deserialize<List<PlotResponseDto>>(responseData, options);
|
|
}
|
|
return plotResponses;
|
|
}
|
|
public async Task<AvailablePlotResponseDto> GetPlottedDriverInformation(AvailablePlotRequestDto availablePlotRequest, string accessToken)
|
|
{
|
|
AvailablePlotResponseDto availablePlotResponse = new AvailablePlotResponseDto();
|
|
|
|
Uri uri = new Uri(string.Format(BASE_URL_RYDO_API + "/v1/bookings/driver-plot", string.Empty));
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(availablePlotRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PostAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
availablePlotResponse = JsonSerializer.Deserialize<AvailablePlotResponseDto>(responseData, options);
|
|
availablePlotResponse.apiResponseDto = new ApiResponseDto();
|
|
availablePlotResponse.apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
availablePlotResponse.apiResponseDto.Message = string.Empty;
|
|
}
|
|
else if (response.StatusCode == HttpStatusCode.InternalServerError)
|
|
{
|
|
availablePlotResponse.apiResponseDto = new ApiResponseDto();
|
|
availablePlotResponse.apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
availablePlotResponse.apiResponseDto.Message = (string)response.ReasonPhrase;
|
|
}
|
|
else
|
|
{
|
|
availablePlotResponse.apiResponseDto = new ApiResponseDto();
|
|
availablePlotResponse.apiResponseDto.StatusCode = (int)response.StatusCode;
|
|
availablePlotResponse.apiResponseDto.Message = "Unable to plot in this area";
|
|
}
|
|
return availablePlotResponse;
|
|
}
|
|
public async Task<int> RemoveDriverPlot(Guid driverID, string accessToken)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{driverID}/driver-leave-plot");
|
|
Console.WriteLine($"URI: {uri}");
|
|
string json = JsonSerializer.Serialize(new { });
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PutAsync(uri, content);
|
|
return (int)response.StatusCode;
|
|
}
|
|
public async Task<StartTripResponse> StartTripFutureBooking(StartTripRequest startTripRequest, string accessToken, string bookingId)
|
|
{
|
|
StartTripResponse startTripResponse = new StartTripResponse();
|
|
Uri uri = new Uri($"{BASE_URL_RYDO_API}/v1/bookings/{bookingId}/head-to-pickup");
|
|
Console.WriteLine($"URI: {uri}");
|
|
|
|
string json = JsonSerializer.Serialize(startTripRequest);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
|
|
HttpResponseMessage response = await _httpClient.PutAsync(uri, content);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
startTripResponse = JsonSerializer.Deserialize<StartTripResponse>(responseData, options);
|
|
}
|
|
startTripResponse.ResponseStatusCode = (int)response.StatusCode;
|
|
startTripResponse.Message = (string)response.ReasonPhrase;
|
|
return startTripResponse;
|
|
}
|
|
public async Task<bool> DriverAppSelectedPermissions(string appToken, DriverAppSelectedPermissionsDto request)
|
|
{
|
|
Uri uri = new Uri($"{BASE_URL}/DriverAssistantApp/DriverAppSelectedPermissions?token={appToken}");
|
|
string json = JsonSerializer.Serialize(request);
|
|
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
|
|
HttpClient _httpClient = new HttpClient();
|
|
PutAppVersionInHeader(_httpClient);
|
|
var response = await _httpClient.PutAsync(uri, content);
|
|
|
|
return response.IsSuccessStatusCode;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Utility
|
|
|
|
private void PutAppVersionInHeader(HttpClient _httpClient)
|
|
{
|
|
string[] parts = AppInfo.Version.ToString().Split('.');
|
|
string formattedString = parts.Select(p => int.Parse(p).ToString("D2")).Aggregate((p1, p2) => p1 + p2);
|
|
|
|
_httpClient.DefaultRequestHeaders.Add("app-version", formattedString);
|
|
}
|
|
|
|
#endregion Utility
|
|
}
|
|
}
|