public async Task <ApiResponse <PromoCodeDTO> > CreatePromoCode(CreatePromoCodeDTO model) { ApiResponse <PromoCodeDTO> result = new ApiResponse <PromoCodeDTO>(); try { PromoCode promoCodeToCreate = new PromoCode(); promoCodeToCreate.CreationDate = DateTime.Now; promoCodeToCreate.ExpiryDate = model.ExpiryDate; promoCodeToCreate.OriginalUsageCount = model.UsageCount; promoCodeToCreate.UsageCount = model.UsageCount; promoCodeToCreate.DiscountRate = model.DiscountRate; if (model.DiscountRate > 100) { result.Succeeded = false; result.Errors.Add("Error creating promo code , discount rate is more than 100% !"); return(result); } if (model.ExpiryDate < DateTime.Now) { result.Succeeded = false; result.Errors.Add("Please enter a valid expiry date !"); return(result); } string code; while (true) { code = HelperFunctions.GenerateRandomNumber(); var promoCodeResult = await unitOfWork.PromoCodeManager.GetAsync(a => a.Code == code); List <PromoCode> promoCodesList = promoCodeResult.ToList(); if (promoCodesList.Count == 0) { break; } } promoCodeToCreate.Code = code; var createPromoCodeResult = await unitOfWork.PromoCodeManager.CreateAsync(promoCodeToCreate); await unitOfWork.SaveChangesAsync(); if (createPromoCodeResult != null) { result.Data = mapper.Map <PromoCodeDTO>(createPromoCodeResult); result.Succeeded = true; return(result); } else { result.Succeeded = false; result.Errors.Add("Error creating promo code"); return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }
public async Task <IActionResult> CreatePromoCode(CreatePromoCodeDTO model) { return(await AddItemResponseHandler(async() => await service.CreatePromoCode(model))); }