Skip to content

Instantly share code, notes, and snippets.

@huseyinafsin
Created June 4, 2023 06:52
Show Gist options
  • Save huseyinafsin/a0f7961d57efc8745c1d2ce9ca77b08d to your computer and use it in GitHub Desktop.
Save huseyinafsin/a0f7961d57efc8745c1d2ce9ca77b08d to your computer and use it in GitHub Desktop.
[Route("api/[controller]")]
[ApiController]
public class BasketController : ControllerBase
{
private readonly IBasketRepository _basketRepository;
public BasketController(IBasketRepository basketRepository)
{
_basketRepository = basketRepository;
}
[HttpGet("GetBasket/{customerId}")]
public async Task<ActionResult> GetCustomerBasket(string customerId)
{
var basket =await _basketRepository.GetCustomerBasketAsync(customerId);
if (basket == null)
{
return BadRequest();
}
return Ok(basket);
}
[HttpPost]
public async Task<ActionResult> UpdateCustomerBasket(string customerId, List<BasketItem> basketItems)
{
var customeerBasket = await _basketRepository.GetCustomerBasketAsync(customerId);
if (customeerBasket == null)
{
var basket = new Basket
{
CustomerId = customerId,
Items = basketItems,
TotalAmount = basketItems.Sum(x => (x.Price * x.Quantity))
};
customeerBasket = await _basketRepository.UpdateBasketAsync(basket);
}
else
{
customeerBasket.Items.AddRange(basketItems);
customeerBasket.TotalAmount += basketItems.Sum(x => (x.Price * x.Quantity));
}
customeerBasket = await _basketRepository.UpdateBasketAsync(customeerBasket);
return Ok(customeerBasket);
}
[HttpDelete("deleteBasket/{basketId}")]
public async Task<ActionResult> DeleteBasket(string basketId)
{
await _basketRepository.DeleteBasketAsync(basketId);
return Ok();
}
[HttpDelete("removeItem")]
public async Task<ActionResult> RemoveItemFromBasket(string customerId, string itemId)
{
await _basketRepository.RemoveItemFromBasket(customerId, itemId);
return Ok();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment