private async Task <NotifEyeTransactionInfo> GetNotifEyePaymentDetails()
        {
            var notifEyeTransaction = new NotifEyeTransactionInfo();

            var user = await _iHttpContextProvider.GetCurrentUser();

            if (user != null && user.Account != null && user.Account.Count > 0)
            {
                AccountSensors accountSensor = new AccountSensors();
                accountSensor.AccountID             = user.Account[0].AccountID;
                accountSensor.NumSensors            = user.Account[0].NumSensors;
                notifEyeTransaction.AccountID       = user.Account[0].AccountID;
                notifEyeTransaction.PrimaryUserName = user.Account[0].UserFullName;
                notifEyeTransaction.Address         = AppUtility.PrepareAddress(user.Account[0].Address, user.Account[0].Address2, user.Account[0].State, user.Account[0].PostalCode, user.Account[0].Country);
                notifEyeTransaction.Email           = user.Account[0].EmailAddress;
                notifEyeTransaction.AccountName     = user.Account[0].CompanyName;
                notifEyeTransaction.CustomerID      = user.Account[0].AccountID;
                notifEyeTransaction.CustomerName    = user.UserName;
                notifEyeTransaction.NumberOfSensor  = user.Account[0].NumSensors;
                notifEyeTransaction.OldRenewalDate  = user.Account[0].SubscriptionExpiry;
                notifEyeTransaction.NewRenewalDate  = user.Account[0].SubscriptionExpiry.AddDays(365);
                var stateTax = await _taxableStateClient.GetTaxableStatebyStateCode(user.Account[0].State);

                notifEyeTransaction.SubscriptionAmount = _accountApplicationService.GetSensorAmount(accountSensor) * 100;
                notifEyeTransaction.TaxString          = stateTax != null?stateTax.Tax.ToString() : "0";

                notifEyeTransaction.TaxAmount = await _accountApplicationService.GetTaxAmount(notifEyeTransaction.SubscriptionAmount, user.Account[0].PostalCode);

                notifEyeTransaction.TotalAmount = await _accountApplicationService.GetSensorAnnualFee(accountSensor, user.Account[0].PostalCode) * 100;
            }
            return(notifEyeTransaction);
        }
Пример #2
0
        private PaymentHistory PrepareNotifyPaymentHistory(Transaction transcation)
        {
            var paymentHistory = new PaymentHistory();

            NotifEyeTransactionInfo transInfo = (NotifEyeTransactionInfo)transcation.TransactionInfo;

            paymentHistory.AccountID   = transInfo.AccountID;
            paymentHistory.CustomerID  = transInfo.CustomerID;
            paymentHistory.ProductName = AppConstant.NotifEye;
            paymentHistory.Data        = JsonConvert.SerializeObject(transInfo);
            return(paymentHistory);
        }
        private string PrepareNotifEyeTemplate(PaymentHistory PaymentHistory)
        {
            NotifEyeTransactionInfo transInfo = JsonConvert.DeserializeObject <NotifEyeTransactionInfo>(PaymentHistory.Data);
            var template = File.ReadAllText(HttpContext.Current.Server.MapPath("~/App_Data/Invoice.html"));

            template = template.Replace("{%CompanyName%}", transInfo.AccountName);
            template = template.Replace("{%CompanyAddress%}", transInfo.Address);
            template = template.Replace("{%Email%}", transInfo.Email);
            template = template.Replace("{%NoOfSensors%}", transInfo.NumberOfSensor.ToString());
            template = template.Replace("{%Amount%}", transInfo.TotalAmount.ToString());
            return(template);
        }
        private StripeChargeCreateOptions CreateStipeChargeOptionForNotify(Transaction transcation, Payment Payment)
        {
            NotifEyeTransactionInfo transInfo = (NotifEyeTransactionInfo)transcation.TransactionInfo;

            return(new StripeChargeCreateOptions()
            {
                Amount = (int)transInfo.TotalAmount,
                Currency = "usd",
                Description = string.Format("Charge for {0} for Account {1} paid by {0}", transcation.ProductName, transInfo.AccountID, transInfo.CustomerID),
                SourceTokenOrExistingSourceId = Payment.StripeToken
            });
        }
        private async Task <int> UpdateAccountSubscription(Transaction transcation)
        {
            var retVal = 0;

            switch (transcation.ProductName)
            {
            case AppConstant.NotifEye:
                NotifEyeTransactionInfo transInfo = (NotifEyeTransactionInfo)transcation.TransactionInfo;
                retVal = await _accountApplicationService.UpdateAccountSubscription(transInfo.AccountID, transInfo.NewRenewalDate);

                break;
            }

            return(retVal);
        }