public CreateQRCodeResponse CreateQRCode(CreateQRCodeRequest createQRCodeRequest) { int count = _qRCodeRepository.GetAlleQRCodes() .Where(x => x.eVoucherId == createQRCodeRequest.eVoucharId).Count(); if (count < 1000) { string promoCode = String.Empty; string imageURL = string.Empty; QRCode obj = new QRCode(); obj.Id = Guid.NewGuid(); obj.eVoucherId = createQRCodeRequest.eVoucharId; bool isAlreadyHave = false; do { promoCode = GeneratePromoteCode(); isAlreadyHave = _qRCodeRepository.CheckPromoCode(promoCode); }while (isAlreadyHave); obj.PromoCode = promoCode; QRCoder.QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator(); QRCoder.QRCodeData qrCodeData = qrGenerator.CreateQrCode(promoCode, QRCoder.QRCodeGenerator.ECCLevel.Q); QRCoder.QRCode qrCode = new QRCoder.QRCode(qrCodeData); try { using (Bitmap bitMap = qrCode.GetGraphic(20)) { using (MemoryStream ms = new MemoryStream()) { bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byte[] byteImage = ms.ToArray(); imageURL = "data:image/png;base64," + Convert.ToBase64String(byteImage); obj.QRCodeImg = byteImage; obj.CreatedBy = "System"; obj.CreatedDate = DateTime.Now; _qRCodeRepository.CreateQRCode(obj); var qrDto = _messageMapper.MapToeQRCodeDto(obj); var createResponse = new CreateQRCodeResponse { codeDto = qrDto, StatusCode = System.Net.HttpStatusCode.OK }; return(createResponse); } } } catch (Exception ex) { var createResponse = new CreateQRCodeResponse { StatusCode = System.Net.HttpStatusCode.BadRequest }; return(createResponse); } } else { string messageStr = "QRCode generation exceed limitation!"; List <string> msgList = new List <string>(); msgList.Add(messageStr); var createResponse = new CreateQRCodeResponse { Messages = msgList }; return(createResponse); } }