75 lines
2.5 KiB
C#
75 lines
2.5 KiB
C#
using CityInfo.WEB.Models;
|
|
using System.Net.Http.Json;
|
|
|
|
namespace CityInfo.WEB.Services
|
|
{
|
|
public class PointOfInterestDataService : IPointOfInterestDataService
|
|
{
|
|
private readonly HttpClient _httpClient;
|
|
private readonly ILogger<PointOfInterestDataService> _logger;
|
|
|
|
public PointOfInterestDataService(
|
|
HttpClient httpClient, ILogger<PointOfInterestDataService> logger)
|
|
{
|
|
_httpClient = httpClient;
|
|
_logger = logger;
|
|
}
|
|
public Task<PointOfInterest?> CreatePointOfInterest(int cityId, PointOfInterest pointOfInterest)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public Task<bool> DeletePointOfInterest(int cityId, int pointOfInterestId)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public async Task<PointOfInterest?> GetPointOfInterest(int cityId, int pointOfInterestId)
|
|
{
|
|
try
|
|
{
|
|
var response = await _httpClient.GetAsync($"/api/cities/{cityId}/pointsofinterest/{pointOfInterestId}");
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
return await response.Content.ReadFromJsonAsync<PointOfInterest>();
|
|
}
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
_logger.LogWarning($"Erreur HTTP {response.StatusCode} lors du chargement du point d'intéret {pointOfInterestId}",
|
|
response.StatusCode, cityId);
|
|
|
|
return null;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, $"Erreur lors de la récupération du point d'intéret {pointOfInterestId}", cityId);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public async Task<IEnumerable<PointOfInterest>> GetPointsOfInterest(int cityId)
|
|
{
|
|
try
|
|
{
|
|
return await _httpClient.GetFromJsonAsync<IEnumerable<PointOfInterest>>($"api/cities/{cityId}/pointsofinterest/")
|
|
?? Enumerable.Empty<PointOfInterest>();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, "Erreur lors de la récupération des Points d'intérets.");
|
|
return Enumerable.Empty<PointOfInterest>();
|
|
}
|
|
}
|
|
|
|
public Task<bool> UpdatePointOfInterest(int cityId, PointOfInterest pointOfInterest)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|