MCPcopy Create free account
hub / github.com/TryCatchLearn/Restore-v2 / BasketController

Class BasketController

API/Controllers/BasketController.cs:12–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10namespace API.Controllers;
11
12public class BasketController(StoreContext context,
13 DiscountService couponService, PaymentsService paymentsService) : BaseApiController
14{
15 [HttpGet]
16 public async Task<ActionResult<BasketDto>> GetBasket()
17 {
18 var basket = await RetrieveBasket();
19
20 if (basket == null) return NoContent();
21
22 return basket.ToDto();
23 }
24
25 [HttpPost]
26 public async Task<ActionResult<BasketDto>> AddItemToBasket(int productId, int quantity)
27 {
28 var basket = await RetrieveBasket();
29
30 basket ??= CreateBasket();
31
32 var product = await context.Products.FindAsync(productId);
33
34 if (product == null) return BadRequest("Problem adding item to basket");
35
36 basket.AddItem(product, quantity);
37
38 var result = await context.SaveChangesAsync() > 0;
39
40 if (result) return CreatedAtAction(nameof(GetBasket), basket.ToDto());
41
42 return BadRequest("Problem updating basket");
43 }
44
45 [HttpDelete]
46 public async Task<ActionResult> RemoveBasketItem(int productId, int quantity)
47 {
48 var basket = await RetrieveBasket();
49
50 if (basket == null) return BadRequest("Unable to retrieve basket");
51
52 basket.RemoveItem(productId, quantity);
53
54 var result = await context.SaveChangesAsync() > 0;
55
56 if (result) return Ok();
57
58 return BadRequest("Problem updating basket");
59 }
60
61 [HttpPost("{code}")]
62 public async Task<ActionResult<BasketDto>> AddCouponCode(string code)
63 {
64 // get the basket
65 var basket = await RetrieveBasket();
66 if (basket == null || string.IsNullOrEmpty(basket.ClientSecret)) return BadRequest("Unable to apply voucher");
67
68 // get the coupon
69 var coupon = await couponService.GetCouponFromPromoCode(code);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected