Exemplo n.º 1
0
        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 = ""
            });
        }