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 logWriters) { _httpClient = httpClient; _logger = new LoggerClient(logWriters.ToArray()); } public async Task 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(result); return result; } public async Task 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(result); return result; } public async Task> GetPlacePredictionsAsync(string input) { var url = $"{Setting.ApiBaseUrl}/{APIUrls.GoogleAutoComplete}"; var response = await _httpClient.PostAsJsonAsync(url, input); var result = await response.Content.ReadFromJsonAsync(typeof(List)); //var user = JsonConvert.DeserializeObject(result); _logger.Debug($"result: {result.GetType().FullName}"); return (List)result; } } }