Пример #1
0
        private byte[] CreateTicketQRImage(Dictionary <string, object> dicParas)
        {
            string ticketNo = dicParas.ContainsKey("para1") ? dicParas["para1"].ToString() : string.Empty;
            string url      = string.Format("https://mp.4000051530.com/t/{0}", ticketNo);

            return(QRHelper.CreateQR(url, 4, 8));
        }
Пример #2
0
        public F_UserDTO Create(F_UserDTO dto)
        {
            var user = base.F_Create <F_UserDTO, F_User>(dto
                                                         , _IF_UserRepository
                                                         , dtoAction => { });

            dto.F_UserDetail = dto.F_UserDetail ?? new F_UserDetailDTO()
            {
                Name          = "未设置",
                PersonalPhone = dto.UserName,
            };
            if (string.IsNullOrWhiteSpace(dto.F_UserDetail.Name))
            {
                dto.F_UserDetail.Name = "未设置";
            }
            var userDetails = new F_UserDetailDTO
            {
                F_UserId      = user.Id,
                PersonalPhone = dto.F_UserDetail.PersonalPhone,
                Name          = dto.F_UserDetail.Name,
                BankCode      = dto.F_UserDetail.BankCode
            };

            var model = this._IF_UserDetailService.Create(userDetails);

            if (dto.UserType == F_UserTypeEnum.CL)
            {
                QRHelper.MakeWithLogo(model.Code);
            }


            return(user);
        }
Пример #3
0
        private byte[] CreateDeviceTokenQRImage(Dictionary <string, object> dicParas)
        {
            string deviceToken = dicParas.ContainsKey("para1") ? dicParas["para1"].ToString() : string.Empty;
            string url         = string.Format("https://mp.4000051530.com/b/{0}", deviceToken);

            return(QRHelper.CreateQR(url, 4, 8));
        }
        public IActionResult OnPostQRGen(double payAmount, int courseTime = 0)
        {
            ResultNormal result = new ResultNormal();

            try
            {
                var           url      = $"{Request.Scheme}://{Request.Host}/WX/PayQRMoney?amt={payAmount}&ct={courseTime}";
                var           fileName = $"{payAmount}_{DateTime.Now.ToString("yyyyMMdd_hhmmss")}.png";
                var           savePath = EduEnviroment.DicPath_QRPay + fileName;
                List <string> desc     = new List <string>();
                desc.Add($"请用户扫码付款,支付金额【{payAmount}】元");
                if (courseTime > 0)
                {
                    desc.Add($"共计: 【{courseTime}】节课时");
                }
                QRHelper.GenQR(url, savePath, desc);
                result.SuccessMsg = EduEnviroment.VirPath_QRPay + fileName;
            }
            catch (Exception ex)
            {
                result.ErrorMsg = "生成失败:" + ex.Message;
                NLogHelper.ErrorTxt($"二维码生成失败:{ex.Message}");
            }
            return(new JsonResult(result));
        }
Пример #5
0
        public IActionResult GetQrCode(int id)
        {
            var url = $"http://{Request.Host.Host}:{Request.Host.Port}/Survey/Show/{id}";

            var data = QRHelper.GetQrImageDataForUrl(url, ImageFormat.Png);

            return(File(data, "image/png", $"QRCode_{id}.png"));
        }
Пример #6
0
    void Start()
    {
        var tex = QRHelper.GenerateQR(targetString, 512, 512);

        image.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
        image.SetNativeSize();
        text.text = QRHelper.FromQR(tex);
    }
Пример #7
0
 public static QRHelper GetInst()
 {
     if (_inst == null)
     {
         _inst = new QRHelper();
     }
     return(_inst);
 }
Пример #8
0
 public void StopCamera(CameraType type)
 {
     if (type == CameraType.Webcam)
     {
         //停止相机
         QRHelper.GetInst().StopCamera();
     }
 }
Пример #9
0
        public ActionResult getQr(int id)
        {
            Bitmap       bmp = QRHelper.GenerateQrCode(id.ToString());
            MemoryStream ms  = new MemoryStream();

            bmp.Save(ms, ImageFormat.Png);
            byte[] bt = ms.ToArray();
            return(File(bt, "image/png"));
        }
Пример #10
0
        public ActionResult QRCode(StudentModel studentModel)
        {
            if (ModelState.IsValid)
            {
                var data = string.Format("{0};{1};{2}", studentModel.FirstName, studentModel.LastName,
                                         studentModel.Address);

                ViewBag.QRCodeImage = string.Format("data:image/png;base64,{0}", QRHelper.GenerateQRCode(data));
            }

            return(View(studentModel));
        }
 public ActionResult SendQrAgain(int appUserId, int swapId)
 {
     try {
         var authLogic = LogicContext.Create <AuthLogic>();
         var appUser   = authLogic.GetUserById(appUserId);
         QRHelper.GenerateAndSaveQrCode(appUser.Email, swapId, this.Request.Url.Scheme);
         return(Json(new { IsSuccess = true, data = string.Empty }, JsonRequestBehavior.AllowGet));
     }
     catch (Exception lex)
     {
         return(Json(new { IsSuccess = false, fail = lex.Message }, JsonRequestBehavior.AllowGet));
     }
 }
Пример #12
0
        /// <summary>
        /// 获取二维码
        /// </summary>
        /// <param name="url"></param>
        /// <param name="imgName"></param>
        /// <param name="logoImg"></param>
        /// <param name="logoPath"></param>
        /// <returns></returns>
        public string GetQRImg(string url, string imgName, string logoImg, string logoPath)
        {
            QRHelper qr      = new QRHelper();
            string   qrurl   = url;
            int      scale   = 5;
            int      version = 0;
            int      size    = 600;
            int      border  = 5;

            if (string.IsNullOrEmpty(logoImg) || QRType == 1)
            {
                logoImg = "/Content/img/cqg.png";
            }
            return(qr.CCLCreateQR_Member(qrurl, "/Upload/CompanyQR/", imgName, logoImg, scale, version, size, border, ""));
        }
Пример #13
0
        public ActionResult Generator(string url)
        {
            string domain = Request.Url.Scheme + System.Uri.SchemeDelimiter
                            + Request.Url.Host + (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);

            if (String.IsNullOrEmpty(url))
            {
                url = "";
            }

            domain = domain + "/Asset/Details/" + url;
            var bitmapBytes = QRHelper.Generator(domain);

            return(File(bitmapBytes, "image/jpeg")); //Return as file result
        }
Пример #14
0
    protected IEnumerator InitCamera()
    {
        //获取授权
        yield return(Application.RequestUserAuthorization(UserAuthorization.WebCam));

        if (Application.HasUserAuthorization(UserAuthorization.WebCam))//在移动平台总是为真
        {
            WebCamDevice[] devices = WebCamTexture.devices;
            if (devices.Length > 0)
            {
                QRHelper.GetInst().StartCamera(0, Screen.width / 2, Screen.height / 2, videoBackImage);
                Invoke("StartScan", 0.3f);
            }
        }
    }
Пример #15
0
        public bool GenQRInvite(string openId, string phone, string headerUrl)
        {
            var qr = _dbContext.DBQRInvite.Where(a => a.UserOpenId == openId &&
                                                 a.InviteQRType == InviteQRType.UserInvite).FirstOrDefault();

            if (qr != null)
            {
                throw new EduException("不能重复创建邀请码");
            }
            string qrDownFilePath     = EduEnviroment.GetQRInviteUserFilePath($"OrigUserInvite_{phone}.png");
            string qrWithLogoFilePath = EduEnviroment.GetQRInviteUserFilePath($"UserInviteWithLogo_{phone}.png");
            string bkFilePath         = EduEnviroment.GetQRFilePath("InviteBK.png");
            string finalFilePath      = EduEnviroment.GetQRInviteUserFilePath($"FinalUserInvite_{phone}.png");

            AccessToken accessToken = WXApi.getAccessToken();
            WXQRResult  result      = WXApi.getQR(WxConfig.QR_Invite_User + "_" + openId, accessToken.access_token);

            WXApi.DownLoadWXQR(result.ticket, qrDownFilePath);

            //添加Logo ,且添加文字
            List <string> text = new List <string>();

            text.Add("您的朋友邀请您加入云艺书院");
            QRHelper.AddLogoForQR(headerUrl, new Bitmap(qrDownFilePath), qrWithLogoFilePath, text);


            //添加背景
            QRHelper.AddBKForQR(bkFilePath, qrWithLogoFilePath, finalFilePath);

            qr = new EQRInvite()
            {
                OrigFilePath     = EduEnviroment.VirPath_QRInviteUser + $"OrigUserInvite_{phone}.png",
                FileWithLogoPath = EduEnviroment.VirPath_QRInviteUser + $"UserInviteWithLogo_{phone}.png",
                FinalFilePath    = EduEnviroment.VirPath_QRInviteUser + $"FinalUserInvite_{phone}.png",
                InviteQRType     = InviteQRType.UserInvite,
                RecordStatus     = RecordStatus.Normal,

                TargetUrl      = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + result.ticket + "",
                CreateDateTime = DateTime.Now,
                UserOpenId     = openId
            };
            _dbContext.DBQRInvite.Add(qr);
            _dbContext.SaveChanges();


            return(true);
        }
        public HttpResponseMessage Signup(PropertySignUp propertySignUp)
        {
            int propertyId;
            int userId = _repository.PropertySignUp(propertySignUp, out propertyId);

            if (userId > 0)
            {
                QRHelper.UploadFileToS3(propertyId.ToString());
                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            else if (userId == -1)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Format(Resources.Messages.EmailAddressExists, propertySignUp.propertyUser.EmailAddress)));
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, Resources.Messages.InvalidData));
            }
        }
Пример #17
0
        /// <summary>
        /// Redirects to spefic Controller and Action inside of Index_QR Entity
        /// Before redirection it makes an QR Validation. its kind of a lookup function
        /// </summary>
        /// <param name="id">Index_QR ID</param>
        /// <returns>In cs QR is valid it redirect to the specified Controller and Action
        /// per exampe /Product/Wizard/5
        /// case qr Its not Valid it return the QRErrorMode page with error description
        /// </returns>
        public ActionResult Redirect(long Id)
        {
            try
            {
                var QR = _unityOfWork.Index_QR.GetById(Id);

                var errorMessage = QRHelper.CheckQRError(QR);
                if (errorMessage != "")
                {
                    return(RedirectToAction("QRErrorMode", "Index_QR", new { errorMessage = errorMessage }));
                }

                return(RedirectToAction(QR.Action_QR.Name, QR.Controller_QR.Name, new { id = QR.ProductID }));
            }
            catch
            {
                return(RedirectToAction("Error", "Home"));
            }
        }
Пример #18
0
    public void InitWithBoxNumber(int number)
    {
        string numberStr   = number.ToString("D4");
        int    digitsCount = numberStr.Length;
        int    digitIndex  = 0;

        foreach (var digit in Digits)
        {
            bool active = digitIndex < digitsCount;
            digit.gameObject.SetActive(active);
            if (active)
            {
                digit.sprite = DigitSprites[(int)Char.GetNumericValue(numberStr[digitIndex])];
            }
            digitIndex++;
        }

        Texture2D boxImage = QRHelper.GenerateQRTexture(numberStr);

        QRCodeImage.sprite = Sprite.Create(boxImage, new Rect(0, 0, boxImage.width, boxImage.height), new Vector2(0.5f, 0.5f));
    }
Пример #19
0
        public void OnPostCreateTecQR()
        {
            Msg = "创建成功!";

            string qrDownFilePath = EduEnviroment.GetQRInviteTecFilePath("WXInvite.png");
            string bkFilePath     = EduEnviroment.GetQRFilePath("InviteBK.png");
            string finalFilePath  = EduEnviroment.GetQRInviteTecFilePath("EduTecInvite.png");

            try
            {
                AccessToken accessToken = WXApi.getAccessToken();
                WXQRResult  result      = WXApi.getQR(WxConfig.QR_Invite_TecPre, accessToken.access_token);
                WXApi.DownLoadWXQR(result.ticket, qrDownFilePath);


                QRHelper.AddBKForQR(bkFilePath, qrDownFilePath, finalFilePath);
            }
            catch (Exception ex)
            {
                Msg = ex.Message;
            }
        }
Пример #20
0
        public IActionResult OnPostCreateLessonQR(ELessonQR qr)
        {
            ResultNormal result = new ResultNormal();

            try
            {
                var code = EduCodeGenerator.Tool_LessonQRCode();
                var url  = $"http://edu.iqianba.cn/Tools/QRScan?code={code}";
                qr.Code           = code;
                qr.CreateDateTime = DateTime.Now;
                string filePath = EduEnviroment.DicPath_Tools_LessonQR + $"{code}.png";
                qr.QRFilePath = EduEnviroment.VirPath_Tools_LessonQR + $"{code}_logo.png";

                string filePathWithLogo = EduEnviroment.DicPath_Tools_LessonQR + $"{code}_logo.png";

                var desc = new List <string>();
                if (!string.IsNullOrEmpty(qr.Name))
                {
                    desc.Add(qr.Name);
                }

                QRHelper.GenQR(url, filePath, desc);
                var logoUrl = "http://edu.iqianba.cn/images/logo_120.png";

                QRHelper.AddLogoForQR(logoUrl, new Bitmap(filePath), filePathWithLogo);

                _ToolsSrv.AddQR(qr);
                _ToolsSrv.SaveChanges();

                result.SuccessMsg = qr.QRFilePath;
            }
            catch (Exception ex)
            {
                result.ErrorMsg = ex.Message;
            }
            return(new JsonResult(result));
        }
Пример #21
0
 public void StartScan()
 {
     QRHelper.GetInst().StartScan();
     codeString        = null;
     currentCodeString = "";
 }
Пример #22
0
    protected IEnumerator ScanCode()
    {
        yield return(new WaitForEndOfFrame());

        QRHelper.GetInst().ScanCode();
    }
 public string GenerateQRCode(int Id)
 {
     QRHelper.UploadFileToS3(Id.ToString());
     return("");
 }
Пример #24
0
 void OnDestroy()
 {
     QRHelper.GetInst().OnQRScanned -= OnQRScanned;
 }
Пример #25
0
        public async Task <ActionResult> AddPaymentTransaction(string offerId, string amount)
        {
            var transactionLogic   = LogicContext.Create <TransactionLogic>();
            var offerLogic         = LogicContext.Create <OfferLogic>();
            var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>();

            DIBZ.Common.Model.EmailTemplate emailTemplate         = new DIBZ.Common.Model.EmailTemplate();
            EmailTemplateHelper             templates             = new EmailTemplateHelper();
            EmailTemplateResponse           emailTemplateResponse = new EmailTemplateResponse();

            DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification();
            try
            {
                var offer = await offerLogic.GetOfferById(ConversionHelper.SafeConvertToInt32(offerId));

                var transactionData = await transactionLogic.AddTransaction(ConversionHelper.SafeConvertToInt32(offerId), Convert.ToDecimal(amount), CurrentLoginSession.ApplicationUser.Id, offer.Swaps.FirstOrDefault().Id);

                if (offer.OfferStatus == OfferStatus.PaymentNeeded && offer.Transactions.Count() == 2)
                {
                    await offerLogic.UpdateOfferStatusToAccept(offer.Id);
                }

                if (transactionData > 0)
                {
                    string QRCodeImagePath = QRHelper.GenerateAndSaveQrCodeForOffer(CurrentLoginSession.ApplicationUser.Email, offer.Id, this.Url.Action("ReadQR", "Offer", new { id = offer.Id }, this.Request.Url.Scheme));
                    if (CurrentLoginSession.ApplicationUserId == offer.ApplicationUserId)
                    {
                        emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(DIBZ.Common.Model.EmailType.Email, DIBZ.Common.Model.EmailContentType.PaymentDone);

                        templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, offer.ApplicationUser.NickName);
                        templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName_Swapper, offer.Swaps.FirstOrDefault().GameSwapPserson.NickName);

                        templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, offer.GameCatalog.Name);
                        templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, offer.ReturnGameCatalog.Name);

                        templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, offer.GameCatalog.Format.Name);
                        templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, offer.ReturnGameCatalog.Format.Name);

                        templates.AddParam(DIBZ.Common.Model.Contants.DFOM_Code, offer.GameOffererDFOM);

                        templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs"));
                        var emailBodyOfferrer = templates.FillTemplate(emailTemplateResponse.Body);

                        //save email data in table
                        await emailTemplateLogic.SaveEmailNotification(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponse.Title, emailBodyOfferrer, EmailType.Email, Priority.Low);

                        EmailHelper.EmailAttachement(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponse.Title, emailBodyOfferrer, QRCodeImagePath);
                    }
                    else
                    {
                        EmailTemplateHelper   TemplatesSwapper             = new EmailTemplateHelper();
                        EmailTemplateResponse emailTemplateResponseSwapper = new EmailTemplateResponse();
                        //get email template
                        emailTemplateResponseSwapper = await emailTemplateLogic.GetEmailTemplate(DIBZ.Common.Model.EmailType.Email, DIBZ.Common.Model.EmailContentType.PaymentDone);

                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, CurrentLoginSession.ApplicationUser.NickName);
                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.AppUserNickName_Swapper, offer.ApplicationUser.NickName);

                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, offer.ReturnGameCatalog.Name);
                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, offer.GameCatalog.Name);

                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameFormat, offer.ReturnGameCatalog.Format.Name);
                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, offer.GameCatalog.Format.Name);

                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.DFOM_Code, offer.GameSwapperDFOM);

                        TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs"));
                        var emailBody = TemplatesSwapper.FillTemplate(emailTemplateResponseSwapper.Body);

                        //save email data in table
                        await emailTemplateLogic.SaveEmailNotification(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponseSwapper.Title, emailBody, EmailType.Email, Priority.Low);

                        EmailHelper.EmailAttachement(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponseSwapper.Title, emailBody, QRCodeImagePath);
                    }

                    EmailHelper.EmailAttachement(CurrentLoginSession.ApplicationUser.Email, "Transaction From PayPal Account", SendEmailAfterTransaction(amount), string.Empty);

                    return(Json(new { IsSuccess = true }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { IsSuccess = false, fail = "Some Thing Wrong!" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception lex)
            {
                return(Json(new { IsSuccess = false, fail = lex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
Пример #26
0
        private byte[] CreateWeiXinPubNoLoginQRImage()
        {
            string url = WeiXinQR.GetRQImageBySnsapi_Login();

            return(QRHelper.CreateQR(url, 4, 11));
        }
Пример #27
0
 void Awake()
 {
     videoBackImage.SetActive(false);
     QRHelper.GetInst().OnQRScanned += OnQRScanned;
 }
Пример #28
0
 public void StopScan()
 {
     QRHelper.GetInst().StopScan();
 }
        public IActionResult Detail(long id)
        {
            var            product = _unityOfWork.Product.GetByIdDetailed(id);
            List <Product> childs  = _unityOfWork.Product.getChilds(id);

            ViewBag.childs = childs;
            List <ProductHistoryViewModelDetail> histories = new List <ProductHistoryViewModelDetail>();

            foreach (var productHistory in product.ProductHistories)
            {
                ProductHistoryViewModelDetail history = new ProductHistoryViewModelDetail()
                {
                    History  = productHistory,
                    UserName = _db.Users.FirstOrDefault(x => x.Id == productHistory.UserID).FirstName + " " + _db.Users.FirstOrDefault(x => x.Id == productHistory.UserID).LastName
                };
                histories.Add(history);
            }
            histories.Sort((x, y) => DateTime.Compare(y.History.Date, x.History.Date));
            ViewBag.histories   = histories;
            ViewBag.HistoryType = _unityOfWork.History.GetAll();

            var QRCode = _unityOfWork.Index_QR.GetByProductId(id);

            List <Product> parents = new List <Product>();

            parents = _unityOfWork.Product.getParents(product, parents);
            List <ProductSoftwareOptions> softwareOptions = _db.ProductSoftwareOptions.Where(x => x.ProductID == id).Include(b => b.SoftwareOption).Include(c => c.SoftwareType).ToList();

            ViewBag.ListOfSoftwareOptions = softwareOptions;
            if (softwareOptions.Count != 0)
            {
                ViewBag.SoftwareType = softwareOptions[0].SoftwareType.Name;
            }

            if (QRCode != null)
            {
                var host = Request.Host;
                ViewBag.QrCode = QRHelper.GenerateQRCode("http://" + host.Host + Url.Action("Redirect", "Index_QR", new { id = QRCode.Id }));
            }
            else
            {
                ViewBag.QrCode = new HtmlString("<a class='float-right text-center' href=" + Url.Action("Create", "Index_QR", new { productID = id, controllerName = "Product", actionName = "Wizard" }) + "> Generate QR Code" + "<img src='/images/addqr.png' height='150' width='150'></img>" + "</a>");
            }

            ViewBag.Files = product.ProductHistories.Where(b => b.FileID != null).ToList();

            //  var products1 = _unityOfWork.Product.getChilds(id);

            /*  if (softwareOptions!= null)
             * {
             *     if (softwareOptions[0].SoftwareType.Name == "DAB+" || softwareOptions[0].SoftwareType.Name == "FM")
             *     {
             *         LicenseV2 myLicense = new LicenseV2()
             *         {
             *             SerialNumber = product.SerialNumber,
             *             ExpirationDate = Convert.ToDateTime(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Expiration Date").Value),
             *             Customer = product.Customer,
             *             LicenseIsInfinite = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Lincense Is Infinite").Value)),
             *             NrBreakinChannels = (int?)Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Number of BreakIn Channels").Value)  ?? 0,
             *             NrEmsembles = (int?)Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Number of Ensembles").Value) ?? 0,
             *             NrEmsemblesBreakIn = (int?)Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Number of Ensembles Break In").Value)??0, // Option name würde mit N neu geschrieben
             *             NrOfChannels = (int?)Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Number of Channels").Value) ?? 0,
             *             Product = product,
             *             VBIType = softwareOptions[0].SoftwareType.Name,
             *             Warranty = Convert.ToDateTime(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Warranty Expiration Date").Value),
             *         };
             *         myLicense.VBIOptions["2ndOutput"] = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Dual Output(2 RF Tx)").Value));
             *         myLicense.VBIOptions["2ndInput"] = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "2nd RF Input").Value));
             *         myLicense.VBIOptions["VOIP"] = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "MP3/VoIP").Value));
             *         myLicense.VBIOptions["Playout"] = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Playout").Value));
             *         myLicense.VBIOptions["MultiAudio"] = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Dual Voice Break-In").Value));
             *         myLicense.VBIOptions["NoLogin"] = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "No Config Login").Value));
             *         myLicense.VBIOptions["OEM"] = Convert.ToBoolean(Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "OEM Mode").Value));
             *     }
             * }*/


            /*     product.Customer.ID = 0;
             * LicenseV2 license = new LicenseV2()
             *   {
             *       SerialNumber = "1712060001",
             *       ExpirationDate = Convert.ToDateTime("12/12/20"),
             *       Customer = product.Customer,
             *       LicenseIsInfinite = true,
             *       NrOfChannels = 4,
             *       NrBreakinChannels = 4,
             *      // NrEmsembles = Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Number of Emsembles").Value),
             *     //  NrEmsemblesBreakIn = Convert.ToInt32(softwareOptions.FirstOrDefault(x => x.SoftwareOption.Description == "Number of Emsembles").Value),
             *       Product = product,
             *       VBIType = "DAB",
             *       Warranty = Convert.ToDateTime("12/12/2020"),
             *   };
             *   license.VBIOptions["2ndOutput"] = false;
             *   license.VBIOptions["2ndInput"] = false;
             *   license.VBIOptions["VOIP"] = false;
             *   license.VBIOptions["Playout"] = false;
             *   license.VBIOptions["MultiAudio"] = false;
             *   license.VBIOptions["NoLogin"] = false;
             *   license.VBIOptions["OEM"] = false;
             *
             *   UInt32 serial = UInt32.Parse("1712060001");
             *
             *   var lic = license.getLincence();
             *
             *
             *
             *
             *   var enc =  PCWKeyGen.generateKey(lic, serial);
             *
             *   var key = PCWKeyGen.keyAsString(enc);
             *
             *  var enc = PrecLicenseGenerator.PCWKeyGen.generateKey(lic, serial);
             *
             *   Console.WriteLine(enc);*/



            return(View(product));
        }