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); }