/// <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)); }