Esempio n. 1
0
        public async Task <ActionResult> Payment(int?upgradeEditionId, EditionPaymentType editionPaymentType)
        {
            var paymentInfo = await _paymentAppService.GetPaymentInfo(new PaymentInfoInput { UpgradeEditionId = upgradeEditionId });

            return(View("~/Views/Payment/Index.cshtml", new PaymentViewModel
            {
                Edition = paymentInfo.Edition,
                AdditionalPrice = paymentInfo.AdditionalPrice,
                EditionPaymentType = editionPaymentType
            }));
        }
        private async Task <IActionResult> UpgradeOrExtend(int upgradeEditionId, EditionPaymentType editionPaymentType)
        {
            var paymentInfo = await _paymentAppService.GetPaymentInfo(new PaymentInfoInput { UpgradeEditionId = upgradeEditionId });

            var edition = await _tenantRegistrationAppService.GetEdition(upgradeEditionId);

            var model = new PaymentViewModel
            {
                Edition            = edition,
                AdditionalPrice    = paymentInfo.AdditionalPrice,
                EditionPaymentType = editionPaymentType
            };

            return(View("Index", model));
        }
        private async Task <IActionResult> UpgradeOrExtend(int upgradeEditionId, EditionPaymentType editionPaymentType)
        {
            var paymentInfo = await _paymentAppService.GetPaymentInfo(new PaymentInfoInput { UpgradeEditionId = upgradeEditionId });

            var edition = await _tenantRegistrationAppService.GetEdition(upgradeEditionId);

            if (editionPaymentType == EditionPaymentType.Upgrade && await UpgradeIsFree(upgradeEditionId))
            {
                await _subscriptionAppService.UpgradeTenantToEquivalentEdition(upgradeEditionId);

                return(RedirectToAction("Index", "SubscriptionManagement", new { area = "AppAreaName" }));
            }

            var model = new PaymentViewModel
            {
                Edition            = edition,
                AdditionalPrice    = paymentInfo.AdditionalPrice,
                EditionPaymentType = editionPaymentType
            };

            return(View("Index", model));
        }
Esempio n. 4
0
        public async Task <IActionResult> Upgrade(int upgradeEditionId)
        {
            if (!AbpSession.TenantId.HasValue)
            {
                throw new ArgumentNullException();
            }

            SubscriptionPaymentType subscriptionPaymentType;

            using (CurrentUnitOfWork.SetTenantId(null))
            {
                var tenant = await _tenantManager.GetByIdAsync(AbpSession.GetTenantId());

                subscriptionPaymentType = tenant.SubscriptionPaymentType;

                if (tenant.EditionId.HasValue)
                {
                    var currentEdition = await _editionManager.GetByIdAsync(tenant.EditionId.Value);

                    if (((SubscribableEdition)currentEdition).IsFree)
                    {
                        return(RedirectToAction("Buy", "Payment", new
                        {
                            tenantId = AbpSession.GetTenantId(),
                            editionId = upgradeEditionId
                        }));
                    }
                }
            }

            var paymentInfo = await _paymentAppService.GetPaymentInfo(new PaymentInfoInput { UpgradeEditionId = upgradeEditionId });

            var edition = await _tenantRegistrationAppService.GetEdition(upgradeEditionId);

            var lastPayment = await _subscriptionPaymentRepository.GetLastCompletedPaymentOrDefaultAsync(
                tenantId : AbpSession.GetTenantId(),
                gateway : null,
                isRecurring : null);

            var model = new UpgradeEditionViewModel
            {
                Edition                 = edition,
                AdditionalPrice         = paymentInfo.AdditionalPrice,
                SubscriptionPaymentType = subscriptionPaymentType,
                PaymentPeriodType       = lastPayment.GetPaymentPeriodType()
            };

            if (subscriptionPaymentType.IsRecurring())
            {
                model.PaymentGateways = new List <PaymentGatewayModel>
                {
                    new PaymentGatewayModel
                    {
                        GatewayType = lastPayment.Gateway,
                        SupportsRecurringPayments = true
                    }
                };
            }
            else
            {
                model.PaymentGateways = _paymentAppService.GetActiveGateways(new GetActiveGatewaysInput());
            }

            return(View("Upgrade", model));
        }