Example #1
0
        /// <summary>
        /// Updates the family subscription
        /// </summary>
        /// <returns></returns>
        public FamilySubscription UpdatetFamilySubscription(FamilySubscription familySubscription)
        {
            var family = GetFamilyById(_currentUserService.FamilyID);

            family.FamilySubscription = familySubscription;
            Repository.Update(family);
            return(family.FamilySubscription);
        }
        /// <summary>
        /// Activates the subscription plan
        /// </summary>
        /// <param name="subscriptionPlanId">The subscription plan identifier.</param>
        /// <param name="subscriptionType">The subscription type.</param>
        /// <param name="familySubscription">The family subscription.</param>
        /// <param name="subscriptionPromoCode">The subscription promo code.</param>
        /// <returns>The family subscription.</returns>
        private FamilySubscription ActivateSubscription(SubscriptionPlan subscriptionPlan, SubscriptionType subscriptionType, FamilySubscription familySubscription, SubscriptionPromoCode subscriptionPromoCode)
        {
            familySubscription = familySubscription ?? new FamilySubscription();
            var subscriptionEndDate = DateTime.UtcNow.AddDays(-1);

            switch (subscriptionType)
            {
            case SubscriptionType.OneMonthTrial:
                subscriptionEndDate               = DateTime.UtcNow.AddMonths(1);
                familySubscription.IsTrialUsed    = true;
                familySubscription.TrialStartDate = DateTime.UtcNow;
                break;

            case SubscriptionType.PromoPlan:
                switch (subscriptionPromoCode.DurationType)
                {
                case DurationType.Day:
                    subscriptionEndDate = DateTime.UtcNow.AddDays(subscriptionPromoCode.Duration);
                    break;

                case DurationType.Month:
                    subscriptionEndDate = DateTime.UtcNow.AddMonths(subscriptionPromoCode.Duration);
                    break;

                case DurationType.Year:
                    subscriptionEndDate = DateTime.UtcNow.AddYears(subscriptionPromoCode.Duration);
                    break;
                }
                break;

            case SubscriptionType.Annual:
                familySubscription.BankTransactionID = PurchaseAnnualSubscription(subscriptionPlan.Price);
                subscriptionEndDate = DateTime.UtcNow.AddYears(1);
                break;

            case SubscriptionType.Pendingaccount:
                subscriptionEndDate               = DateTime.UtcNow.AddMonths(1);
                familySubscription.IsTrialUsed    = true;
                familySubscription.TrialStartDate = DateTime.UtcNow;
                break;
            }
            familySubscription.SubscriptionPlanID = subscriptionPlan.Id;
            familySubscription.StartsOn           = DateTime.UtcNow;
            familySubscription.EndsOn             = subscriptionEndDate;
            familySubscription.Status             = SubscriptionStatus.Active;
            familySubscription.PromoCode          = subscriptionPromoCode?.PromoCode ?? string.Empty;

            return(_familyService.UpdatetFamilySubscription(familySubscription));
        }