"Remove from Cart" functionality added; need to go back to debug why the Cart is no longer coming up.

This commit is contained in:
Kira 2022-09-12 11:27:36 -07:00
parent 3bf434124c
commit 675444795c
7 changed files with 91 additions and 7 deletions

View File

@ -100,5 +100,33 @@ namespace ShopOnline.Api.Controllers
}
}
[HttpDelete("{id:int}")]
public async Task<ActionResult<CartItemDto>> DeleteItem(int id)
{
try
{
var cartItem = await this.shoppingCartRepository.DeleteItem(id);
if(cartItem == null)
{
return NotFound();
}
var product = await this.productRepository.GetItem(cartItem.ProductId);
if(product == null)
{
return NotFound();
}
var cartItemDto = cartItem.ConvertToDto(product);
return Ok(cartItemDto);
}
catch (Exception ex)
{
return StatusCode(StatusCodes.Status500InternalServerError, ex.Message);
}
}
}
}

View File

@ -45,9 +45,16 @@ namespace ShopOnline.Api.Repositories
}
public Task<CartItem> DeleteItem(int id)
public async Task<CartItem> DeleteItem(int id)
{
throw new NotImplementedException();
var item = await this.shopOnlineDbContext.CartItems.FindAsync(id);
if(item != null)
{
this.shopOnlineDbContext.CartItems.Remove(item);
await this.shopOnlineDbContext.SaveChangesAsync();
}
return item;
}
public async Task<CartItem> GetItem(int id)

View File

@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Components;
using ShopOnline.Models.Dtos;
using ShopOnline.Web.Services;
using ShopOnline.Web.Services.Contracts;
namespace ShopOnline.Web.Pages
@ -28,5 +29,6 @@ namespace ShopOnline.Web.Pages
{
return groupedProductDtos.FirstOrDefault(pg => pg.CategoryId == groupedProductDtos.Key).CategoryName;
}
}
}

View File

@ -20,6 +20,10 @@ else {
<h5>@item.ProductName</h5>
<div class="mb-4">@item.ProductDescription</div>
<span>Price: <b>@item.Price.ToString("C")</b></span>
<div>
<button @onclick = "(() => DeleteCartItem_Click(item.Id))"
class="btn btn-danger sm">Remove</button>
</div>
</div>
</div>
}

View File

@ -9,7 +9,7 @@ namespace ShopOnline.Web.Pages
[Inject]
public IShoppingCartService ShoppingCartService { get; set; }
public IEnumerable<CartItemDto> ShoppingCartItems { get; set; }
public List<CartItemDto> ShoppingCartItems { get; set; }
public string ErrorMessage { get; set; }
@ -25,5 +25,24 @@ namespace ShopOnline.Web.Pages
}
}
protected async Task DeleteCartItem_Click(int id)
{
var cartItemDto = await ShoppingCartService.DeleteItem(id);
RemoveCartItem(id);
}
private CartItemDto GetCartItem(int id)
{
return ShoppingCartItems.FirstOrDefault(i => i.Id == id);
}
private void RemoveCartItem(int id)
{
var CartItemDto = GetCartItem(id);
ShoppingCartItems.Remove(CartItemDto);
}
}
}

View File

@ -4,7 +4,8 @@ namespace ShopOnline.Web.Services.Contracts
{
public interface IShoppingCartService
{
Task<IEnumerable<CartItemDto>> GetItems(int userId);
Task<List<CartItemDto>> GetItems(int userId);
Task<CartItemDto> AddItem(CartItemToAddDto cartItemToAddDto);
Task<CartItemDto> DeleteItem(int id);
}
}

View File

@ -38,7 +38,25 @@ namespace ShopOnline.Web.Services
}
}
public async Task<IEnumerable<CartItemDto>> GetItems(int userId)
public async Task<CartItemDto> DeleteItem(int id)
{
try
{
var response = await httpClient.DeleteAsync($"api/ShoppingCart/{id}");
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadFromJsonAsync<CartItemDto>();
}
return default(CartItemDto);
}
catch (Exception)
{
throw;
}
}
public async Task<List<CartItemDto>> GetItems(int userId)
{
try
{
@ -47,9 +65,9 @@ namespace ShopOnline.Web.Services
{
if(response.StatusCode == System.Net.HttpStatusCode.NoContent)
{
return Enumerable.Empty<CartItemDto>();
return Enumerable.Empty<CartItemDto>().ToList();
}
return await response.Content.ReadFromJsonAsync<IEnumerable<CartItemDto>>();
return await response.Content.ReadFromJsonAsync<List<CartItemDto>>();
}
else
{
@ -63,5 +81,10 @@ namespace ShopOnline.Web.Services
throw;
}
}
Task<List<CartItemDto>> IShoppingCartService.GetItems(int userId)
{
throw new NotImplementedException();
}
}
}