public async Task <ActionResult <RedeemCodeModel> > AddToBasket([FromBody] string redeemCode) { var basket = await _basketsRepository.ReadAsync(); if (redeemCode != null) { var redeem = await _redeemCodesRepository.ReadAsync(redeemCode); if (redeem == null) { var err = new RedeemCodeModel { Id = "", Discount = 0, Error = "Redeem Code Not Found!: " + redeemCode }; return(StatusCode(StatusCodes.Status404NotFound, err)); } if (redeem.Used) { string error = ""; if (basket.RedeemCode != null && basket.RedeemCode.id == redeem.id) { error = "Redeem Code Already Applied " + redeem.id; } else { error = "Redeem Code Already Used: " + redeem.id; } var err = new RedeemCodeModel { Id = "", Discount = 0, Error = error }; return(StatusCode(StatusCodes.Status404NotFound, err)); } if (basket.RedeemCode == null) { await _redeemCodesRepository.UseRedeenCode(redeemCode); basket.RedeemCode = redeem; } else { await _redeemCodesRepository.ReUseRedeenCode(basket.RedeemCode.id); await _redeemCodesRepository.UseRedeenCode(redeemCode); basket.RedeemCode = redeem; } } basket = await _basketsRepository.ReadAsync(); return(new RedeemCodeModel { Id = basket.RedeemCode.id, Discount = basket.RedeemCode.Discount, Error = "" }); }
public async Task <ActionResult <Discount> > ApplyDiscount([FromBody] string discountText) { var discountModel = await _discountsRepository.ReadAsync(discountText); var basketModel = await _basketsRepository.ReadAsync(); // error handling if (discountModel == null) { return(NotFound(new JsonResult("Discount doesn't exist."))); } if (discountModel.IsUsed) { return(BadRequest(new JsonResult("This discount has been used already."))); } if (basketModel.DiscountApplied) { return(BadRequest(new JsonResult("A discount has already been applied."))); } // set the discount and send to view for confirm await _discountsRepository.SetUsedAsync(discountModel.Name); await _basketsRepository.SetDiscount(discountModel.DiscountRate); discountModel = await _discountsRepository.ReadAsync(discountModel.Name); return(discountModel.ToDiscountViewModel()); }
public async Task <ActionResult <Basket> > GetBasket(string redeemCode) { var basket = await _basketsRepository.ReadAsync(); if (redeemCode != null) { var redeem = await _redeemCodesRepository.ReadAsync(redeemCode); basket.RedeemCode = redeem; } return(basket.ToBasketViewModel()); }
public async Task <ActionResult <Order> > PlaceOrder() { var basket = await _basketsRepository.ReadAsync(); var orderModel = basket.ToOrderModel(); await _ordersRepository.SaveAsync(orderModel); await _basketsRepository.ResetBasketAsync(); return(CreatedAtAction( nameof(GetOrder), new { orderModel.ID }, orderModel.ToOrderViewModel())); }
public async Task <ActionResult <Basket> > GetBasket() { var basket = await _basketsRepository.ReadAsync(); return(basket.ToBasketViewModel()); }
public async Task <Basket> ReadAsync() { var basket = await basketsRepository.ReadAsync(); return(await calcEngineService.CalculateTotals(basket)); }