ShopOnlineSolution/ShopOnline.Web/Services/ShoppingCartService.cs

68 lines
2.2 KiB
C#

using ShopOnline.Models.Dtos;
using ShopOnline.Web.Services.Contracts;
using System.Net.Http.Json;
namespace ShopOnline.Web.Services
{
public class ShoppingCartService : IShoppingCartService
{
private readonly HttpClient httpClient;
public ShoppingCartService(HttpClient httpClient)
{
this.httpClient = httpClient;
}
public async Task<CartItemDto> AddItem(CartItemToAddDto cartItemToAddDto)
{
try
{
var response = await httpClient.PostAsJsonAsync<CartItemToAddDto>("api/ShoppingCart", cartItemToAddDto);
if (response.IsSuccessStatusCode)
{
if(response.StatusCode == System.Net.HttpStatusCode.NoContent)
{
return default(CartItemDto);
}
return await response.Content.ReadFromJsonAsync<CartItemDto>();
}
else
{
var message = await response.Content.ReadAsStringAsync();
throw new Exception($"Http status: {response.StatusCode}\n\tMessage: {message}");
}
}
catch
{
throw;
}
}
public async Task<IEnumerable<CartItemDto>> GetItems(int userId)
{
try
{
var response = await httpClient.GetAsync($"api/ShoppingCart/{userId}/GetItems");
if(response.IsSuccessStatusCode)
{
if(response.StatusCode == System.Net.HttpStatusCode.NoContent)
{
return Enumerable.Empty<CartItemDto>();
}
return await response.Content.ReadFromJsonAsync<IEnumerable<CartItemDto>>();
}
else
{
var message = await response.Content.ReadAsStringAsync();
throw new Exception($"Http status: {response.StatusCode}\n\tMessage: {message}");
}
}
catch(Exception)
{
throw;
}
}
}
}