TourIAm/TIAMWebApp/Shared/Services/GooglePlacesService.cs

62 lines
2.4 KiB
C#

using AyCode.Services.Loggers;
using DevExpress.Office;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
using TIAM.Core.Loggers;
using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Models.ClientSide;
using TIAMWebApp.Shared.Application.Models.PageModels;
using TIAMWebApp.Shared.Application.Utility;
namespace TIAMWebApp.Shared.Application.Services
{
public class GooglePlacesService
{
private readonly HttpClient _httpClient;
private readonly ILogger _logger;
public GooglePlacesService(HttpClient httpClient, IEnumerable<IAcLogWriterClientBase> logWriters)
{
_httpClient = httpClient;
_logger = new LoggerClient<TransferDataService>(logWriters.ToArray());
}
public async Task<string> ValidateAddressAsync(string address)
{
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GoogleValidateAddress}";
var response = await _httpClient.PostAsJsonAsync(url, address);
var result = await response.Content.ReadAsStringAsync();
//var user = JsonConvert.DeserializeObject<UserModelDto>(result);
return result;
}
public async Task<string> CalculateRouteAsync(string origin, string destination, DateTime travelTime)
{
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GoogleCalculateRoute}";
RouteCalculationModel routeCalculationModel = new RouteCalculationModel();
routeCalculationModel.Origin = origin ;
routeCalculationModel.Destination = destination ;
routeCalculationModel.TravelTime = travelTime ;
var response = await _httpClient.PostAsJsonAsync(url, routeCalculationModel);
var result = await response.Content.ReadAsStringAsync();
//var user = JsonConvert.DeserializeObject<UserModelDto>(result);
return result;
}
public async Task<List<string>> GetPlacePredictionsAsync(string input)
{
var url = $"{Setting.ApiBaseUrl}/{APIUrls.GoogleAutoComplete}";
var response = await _httpClient.PostAsJsonAsync(url, input);
var result = await response.Content.ReadFromJsonAsync(typeof(List<string>));
//var user = JsonConvert.DeserializeObject<UserModelDto>(result);
_logger.Debug($"result: {result.GetType().FullName}");
return (List<string>)result;
}
}
}