From 40f4656036c7315cf1334fc2cd18f746e55268b7 Mon Sep 17 00:00:00 2001 From: Khwezi Mngoma Date: Tue, 9 Jun 2026 22:32:54 +0200 Subject: [PATCH] Removed shopping cart objects --- .../Orders/CartService.cs | 128 ------------------ .../Orders/Models/Cart.cs | 18 --- .../Orders/Models/CartItem.cs | 12 -- 3 files changed, 158 deletions(-) delete mode 100644 LiteCharms.Features.MidrandBooks/Orders/CartService.cs delete mode 100644 LiteCharms.Features.MidrandBooks/Orders/Models/Cart.cs delete mode 100644 LiteCharms.Features.MidrandBooks/Orders/Models/CartItem.cs diff --git a/LiteCharms.Features.MidrandBooks/Orders/CartService.cs b/LiteCharms.Features.MidrandBooks/Orders/CartService.cs deleted file mode 100644 index ae3f8c7..0000000 --- a/LiteCharms.Features.MidrandBooks/Orders/CartService.cs +++ /dev/null @@ -1,128 +0,0 @@ -using LiteCharms.Features.Abstractions; -using LiteCharms.Features.MidrandBooks.Orders.Models; -using LiteCharms.Features.MidrandBooks.Products.Models; - -namespace LiteCharms.Features.MidrandBooks.Orders; - -public sealed class CartService : IService -{ - private Cart cart = new(); - - public Cart GetCart() => cart; - - public void LoadCart(Cart savedCart) => cart = savedCart; - - public void AddItem(ProductPrice productPrice) - { - var itemExists = false; - - for (var i = 0; i < cart.Items.Count; i++) - { - if (cart.Items[i].Price!.Id == productPrice.Id) - { - cart.Items[i].Quantity++; - cart.Items[i].Amount += productPrice.Amount; - - itemExists = true; - - break; - } - } - - if (!itemExists) - cart.Items.Add(new CartItem - { - Price = productPrice, - Amount = productPrice.Amount, - Quantity = 1, - }); - - CalculateTotalPrice(); - } - - public void UpdateQuantity(long productPriceId, int newQuantity) - { - if (newQuantity <= 0) - { - RemoveAllSameItem(productPriceId); - - return; - } - - for (var i = 0; i < cart.Items.Count; i++) - { - if (cart.Items[i].Price!.Id == productPriceId) - { - var oldQuantity = cart.Items[i].Quantity; - var pricePerUnit = cart.Items[i].Price!.Amount; - - cart.Items[i].Quantity = newQuantity; - cart.Items[i].Amount = pricePerUnit * newQuantity; - break; - } - } - - CalculateTotalPrice(); - } - - public void RemoveOneItem(long productPriceId) - { - for (var i = 0; i < cart.Items.Count; i++) - { - if (cart.Items[i].Price!.Id == productPriceId) - { - if (cart.Items[i].Quantity <= 1) - { - cart.Items.RemoveAt(i); - } - else - { - cart.Items[i].Quantity--; - cart.Items[i].Amount -= cart.Items[i].Price!.Amount; - } - - break; - } - } - - CalculateTotalPrice(); - } - - public void RemoveAllSameItem(long productPriceId) - { - if (cart.Items.Count == 0) return; - - var item = cart.Items.FirstOrDefault(i => i.Price?.Id == productPriceId); - - if (item is not null) cart.Items.Remove(item); - - CalculateTotalPrice(); - } - - public void Clear() - { - if(cart.CustomerId is not null || cart.OrderId is not null) - { - cart.TotalPrice = 0; - cart.TotalVat = 0; - cart.Items.Clear(); - - return; - } - - cart = new Cart(); - } - - public decimal CalculateTotalPrice() - { - if (cart.Items.Count == 0) return 0; - - var gross = cart.Items.Sum(i => i.Amount); - - if (!cart.IsVatInclusive) cart.TotalVat = gross * cart.VatRate; - - cart.TotalPrice = gross + cart.TotalVat; - - return cart.TotalPrice; - } -} diff --git a/LiteCharms.Features.MidrandBooks/Orders/Models/Cart.cs b/LiteCharms.Features.MidrandBooks/Orders/Models/Cart.cs deleted file mode 100644 index 1d1fd1e..0000000 --- a/LiteCharms.Features.MidrandBooks/Orders/Models/Cart.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace LiteCharms.Features.MidrandBooks.Orders.Models; - -public sealed class Cart -{ - public long? CustomerId { get; set; } - - public long? OrderId { get; set; } - - public decimal TotalPrice { get; set; } - - public decimal TotalVat { get; set; } - - public decimal VatRate { get; set; } = 0.15m; - - public bool IsVatInclusive { get; set; } = true; - - public IList Items { get; set; } = []; -} diff --git a/LiteCharms.Features.MidrandBooks/Orders/Models/CartItem.cs b/LiteCharms.Features.MidrandBooks/Orders/Models/CartItem.cs deleted file mode 100644 index 5d73afe..0000000 --- a/LiteCharms.Features.MidrandBooks/Orders/Models/CartItem.cs +++ /dev/null @@ -1,12 +0,0 @@ -using LiteCharms.Features.MidrandBooks.Products.Models; - -namespace LiteCharms.Features.MidrandBooks.Orders.Models; - -public sealed class CartItem -{ - public ProductPrice? Price { get; set; } - - public long Quantity { get; set; } - - public decimal Amount { get; set; } -}