Exemple #1
0
        public IActionResult Discount(long basketId, string discountCode)
        {
            string validation;

            if (basketId == 0)
            {
                return(ControllerHelper.RedirectToLocal(this, "/Home/Error?failureMessage=Something went wrong."));
            }

            if (string.IsNullOrWhiteSpace(discountCode))
            {
                return(ControllerHelper.RedirectToLocal(this, string.Format("/Orders/ViewBasket?id={0}&failureMessage=No discount code provided.", basketId)));
            }

            validation = DiscountCodeHelper.ValidateDiscountCode(discountCode, _context);

            if (!string.IsNullOrWhiteSpace(validation))
            {
                return(ControllerHelper.RedirectToLocal(this, string.Format("/Orders/ViewBasket?id={0}&failureMessage={1}.", basketId, validation)));
            }

            if (!DiscountCodeHelper.AddDiscountItem(basketId, discountCode, _context))
            {
                return(ControllerHelper.RedirectToLocal(this, string.Format("/Orders/ViewBasket?id={0}&failureMessage=Discount code has already been added.", basketId)));
            }

            return(ControllerHelper.RedirectToLocal(this, string.Format("/Orders/ViewBasket?id={0}&SuccessMessage=Discount code has been added.", basketId)));
        }
        public async Task <App.Support.Common.Models.PromotionService.DiscountCodes.DiscountCode> GetDiscountCodeByCode(string code)
        {
            var normalizedCode = DiscountCodeHelper.ReplaceDash(code).Normalize();
            var discountCode   =
                await _promotionDbContext.DiscountCodes.FirstOrDefaultAsync(dc => dc.NormalizedCode.Equals(normalizedCode));

            return(discountCode);
        }
        public ICollection <App.Support.Common.Models.PromotionService.DiscountCodes.DiscountCode> GenerateDiscountCodesFromDiscountCampaignViewModel(DiscountCampaignRequestViewModel viewModel)
        {
            ICollection <App.Support.Common.Models.PromotionService.DiscountCodes.DiscountCode> discountCodes =
                new List <App.Support.Common.Models.PromotionService.DiscountCodes.DiscountCode>();

            switch (viewModel.CodeType)
            {
            case CodeType.SingleCode:
            {
                var discountCode = new App.Support.Common.Models.PromotionService.DiscountCodes.DiscountCode
                {
                    Id             = Guid.NewGuid(),
                    Code           = viewModel.SingleCode,
                    NormalizedCode = viewModel.SingleCode.Normalize(),
                    Status         = DiscountCodeStatus.Active,
                    MaxRedeem      = viewModel.MaxRedeem
                };


                discountCodes.Add(discountCode);

                break;
            }

            case CodeType.BulkCodes:
            {
                var count = viewModel.CodesAmount;

                for (var i = 0; i < count; i++)
                {
                    var discountCode = new App.Support.Common.Models.PromotionService.DiscountCodes.DiscountCode
                    {
                        Id        = Guid.NewGuid(),
                        Code      = $"{viewModel.CodePrefix}-{DiscountCodeHelper.RandomString(5)}",
                        Status    = DiscountCodeStatus.Active,
                        MaxRedeem = 1
                    };

                    discountCode.NormalizedCode = DiscountCodeHelper.ReplaceDash(discountCode.Code).Normalize();

                    discountCodes.Add(discountCode);
                }
                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(discountCodes);
        }