public string GetDCEmailTemplate(DcntEmailTemplateInput data)
        {
            //TODO email
            var address = data.WalletId;
            var body    = new StringBuilder();

            body.AppendLine("<table border = '0' cellpadding = '0' cellspacing = '0' style = 'max-width:800px; margin:auto; padding:0;font-family: Tahoma, Geneva, sans-serif;' width = '100%'>");
            body.AppendLine("<tr style = 'background:#313F4D'>");
            body.AppendLine("<td colspan='3'><img style='margin-left:10px' height='50px' src='" + data.Uri + "'></td>");
            body.AppendLine("</tr>");
            body.AppendLine("<tr>");
            body.AppendLine("<td colspan = '10' style = 'background:#EEEEEE; color:white;padding: 50px'>");
            body.AppendLine("<h1 style='color:#292b2c'> Dear " + data.UserName + ", </h1> ");
            body.AppendLine("<p style='font-size:20px;color:#292b2c;'>Thank you for purchasing <i style='color:#292b2c'>" + data.Amount + " SLVT </i> tokens valued at <i style='color:#292b2c'>$ " + data.Dollar + ".</i>  Please send <i style='color:#292b2c'>" + data.DcntInBtcOrEthOrUsd.ToString("0.00000000") + " " + data.CurrentType.ToUpper() + " </i> to wallet address: </p>");
            body.AppendLine("<p align ='center' style='font-size:20px;color:#292b2c;'><i style='color:#292b2c'>" + address + " </i> </p>");
            body.AppendLine("<img style='display: block; margin: auto' src='" + data.QrCode + "' alt='' width='190' height='180' sizes ='(max-width:270px) 100vw, 270px'>");
            body.AppendLine("<p style='font-size:20px;color:#292b2c;'>Thank you,</p>");
            body.AppendLine("<p style='font-size:20px;color:#292b2c;'>The Silvertoken Team</p>");
            body.AppendLine("<p style='font-size:20px;color:#292b2c;'>Silvertoken.com</p>");
            body.AppendLine("</td>");
            body.AppendLine("</tr>");
            body.AppendLine("<tr>");
            body.AppendLine("<td align = 'center' style = 'background: #313F4D' height = '60'>");
            body.AppendLine("<span style = 'color:white; margin: 20px 0; ' > Copyright | Silvertoken | 2017 </span>");
            body.AppendLine("</td>");
            body.AppendLine("</tr>");
            body.AppendLine("</table>");

            return(body.ToString());
        }
Пример #2
0
        public async Task <PaymentOutput> PurchaseTokens(WalletLogsDto input)
        {
            try
            {
                if (input != null)
                {
                    var user = _userRepository.Get(input.UserId);


                    var dcnt   = input.Amount;
                    var dollar = dcnt * _dcntInUsd;
                    var dcntInBtcOrEthOrUsd = dollar;

                    var currency = await _currenciesRepository.FirstOrDefaultAsync(input.CurrencyId);

                    if (!currency.IsCrypto)
                    {
                        var users = await UserManager.GetUsersInRoleAsync("Admin");

                        var instruction = users.FirstOrDefault(item => item.WiredInstruction != null).WiredInstruction;
                        return(new PaymentOutput()
                        {
                            Instruction = instruction
                        });
                    }
                    if (currency == null)
                    {
                        throw new UserFriendlyException(L("CurrencyNotFound"));
                    }

                    var exchangeRate = await _exchangeRateRepository.FirstOrDefaultAsync(e => e.CurrencyId.Equals(currency.Id));

                    if (exchangeRate == null)
                    {
                        throw new UserFriendlyException(L("CurrencyNotFound"));
                    }

                    if (currency.IsCrypto)
                    {
                        if (Convert.ToDouble(input.Amount) != 0.0)
                        {
                            dcntInBtcOrEthOrUsd = (_dcntInUsd * input.Amount) / exchangeRate.Price;
                        }
                    }

                    var transaction = new Transaction()
                    {
                        UserId    = input.UserId,
                        AmountDue = dcntInBtcOrEthOrUsd,
                        //TODO: old CurrencyType = (int)Enum.Parse(typeof(CurrentTypeEnum), input.CurrentType),
                        WalletId          = input.WalletId,
                        CurrencyId        = currency.Id,
                        TransactionStatus = TransactionStatusEnum.Commited,
                        IsDeleted         = false,
                        FirstName         = user.Name,
                        LastName          = user.Surname,
                        TokensIssued      = (long)input.Amount,
                        EmailAddress      = user.EmailAddress,
                        TransactionDate   = DateTime.Now,
                        TenantId          = AbpSession.TenantId
                    };
                    await _walletLogsRepository.InsertAsync(transaction);

                    QRCodeGenerator        qrGenerator = new QRCodeGenerator();
                    var                    walletId    = (await _supportedCurrencyRepository.FirstOrDefaultAsync(x => x.CurrencyId == currency.Id)).WalletId;
                    QRCodeData             qrCodeData  = qrGenerator.CreateQrCode(walletId, QRCodeGenerator.ECCLevel.Q);
                    QRCode                 qrCode      = new QRCode(qrCodeData);
                    Bitmap                 qrCodeImage = qrCode.GetGraphic(4);
                    System.IO.MemoryStream ms          = new System.IO.MemoryStream();
                    qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
                    byte[] byteImage    = ms.ToArray();
                    var    qrCodeBase64 = Convert.ToBase64String(byteImage);

                    var qrcodeDto = new PaymentOutput()
                    {
                        QrCode  = qrCodeBase64,
                        Address = walletId
                    };

                    var tenant = await _tenantRepository.FirstOrDefaultAsync(item => item.Id == AbpSession.TenantId);

                    var currencyImage = StoreClientAgreement(ms, currency.Name);
                    //TODO email
                    //Uri uri = new Uri(tenant.LogoUrl);
                    var emailData = new DcntEmailTemplateInput()
                    {
                        UserName            = user.Name,
                        WalletId            = walletId,
                        Amount              = input.Amount,
                        CurrentType         = currency.Name,
                        Dcnt                = dcnt,
                        Dollar              = dollar,
                        Uri                 = tenant.LogoUrl,
                        DcntInBtcOrEthOrUsd = dcntInBtcOrEthOrUsd,
                        QrCode              = currencyImage
                    };

                    var receiver = new MailAddress(user.EmailAddress, user.FullName);
                    var body     = _userEmailer.GetDCEmailTemplate(emailData);
                    await _userEmailer.SendEmailWithSendGrid(receiver, body);

                    return(qrcodeDto);
                }
            }
            catch (Exception ex)
            {
            }
            return(new PaymentOutput());
        }