Exemplo n.º 1
0
        private async Task <decimal> CalculateAmountForPaymentAsync(SubscribableEditionCacheItem targetEdition, PaymentPeriodType?periodType, EditionPaymentType editionPaymentType, Tenant tenant)
        {
            if (editionPaymentType != EditionPaymentType.Upgrade)
            {
                return(targetEdition.GetPaymentAmount(periodType));
            }

            if (tenant.EditionId == null)
            {
                throw new UserFriendlyException(L("CanNotUpgradeSubscriptionSinceTenantHasNoEditionAssigned"));
            }

            var remainingDaysCount = tenant.CalculateRemainingDayCount();

            if (remainingDaysCount <= 0)
            {
                return(targetEdition.GetPaymentAmount(periodType));
            }

            Debug.Assert(tenant.EditionId != null, "tenant.EditionId != null");

            var currentEdition = await _editionCache.GetAsync(tenant.EditionId.Value);

            return(_subscriptionPaymentManager.GetUpgradePrice(currentEdition, targetEdition, remainingDaysCount));
        }
Exemplo n.º 2
0
 private async Task <EditionWithFeaturesDto> CreateEditionWithFeaturesDto(SubscribableEditionCacheItem edition, Dictionary <string, Feature> featureDictionary)
 {
     return(new EditionWithFeaturesDto
     {
         Edition = ObjectMapper.Map <EditionSelectDto>(edition),
         FeatureValues = (await _editionManager.GetFeatureValuesAsync(edition.Id))
                         .Where(featureValue => featureDictionary.ContainsKey(featureValue.Name))
                         .Select(fv => new NameValueDto(
                                     fv.Name,
                                     featureDictionary[fv.Name].GetValueText(fv.Value, _localizationContext))
                                 )
                         .ToList()
     });
 }
Exemplo n.º 3
0
        private string GetPaymentDescription(CreatePaymentDto input, SubscribableEditionCacheItem targetEdition)
        {
            switch (input.EditionPaymentType)
            {
            case EditionPaymentType.NewRegistration:
            case EditionPaymentType.BuyNow:
                return(L("Edition.Purchase"));

            case EditionPaymentType.Upgrade:
                return(L("Edition.UpgradedTo", targetEdition.DisplayName));

            case EditionPaymentType.Extend:
                return(L("Edition.Extended", targetEdition.DisplayName));

            default:
                throw new ArgumentException(nameof(input.EditionPaymentType));
            }
        }