예제 #1
0
        public void UpdateSubscription(string subscriptionId, SubscriptionDetails updatedDetails)
        {
            var postParams = new Dictionary <string, string>
            {
                { "details", Serialize(updatedDetails) }
            };

            AuthenticatedPost("subscriptions/" + subscriptionId, postParams);
        }
예제 #2
0
        public SubscriptionDetails CreateSubscription(string accountId, SubscriptionDetails subscriptionDetails)
        {
            var postParams = new Dictionary <string, string>
            {
                { "accountId", accountId },
                { "details", Serialize(subscriptionDetails) }
            };
            var response = AuthenticatedPost("subscriptions/", postParams);

            return(Deserialize <SubscriptionDetails>(response));
        }
 /// <summary>
 /// Updates the configuration of a subscription
 /// </summary>
 /// <param name="subscriptionId">The ID of the subscription to be updated</param>
 /// <param name="subscriptionDetails">The new details of the subscription</param>
 public void UpdateSubscription(string subscriptionId, SubscriptionDetails subscriptionDetails)
 {
     var context = GetAccountsContext();
     var subscription = context.Subscriptions.FirstOrDefault(s => s.Id.Equals(subscriptionId));
     if (subscription != null)
     {
         subscription.IsActive = subscriptionDetails.IsActive;
         subscription.IsTrial = subscriptionDetails.IsTrial;
         subscription.Label = subscriptionDetails.Label;
         subscription.StoreCountLimit = subscriptionDetails.StoreLimit;
         subscription.StoreSizeLimit = subscriptionDetails.StoreSizeLimit;
         subscription.TotalSizeLimit = subscriptionDetails.TotalSizeLimit;
         context.SaveChanges();
     }
 }
        /// <summary>
        /// Creates a new subscription for an account
        /// </summary>
        /// <param name="accountId">The ID of the account</param>
        /// <param name="subscriptionDetails">The configuration for the new subscription</param>
        /// <returns>The ID of the new subscription</returns>
        public SubscriptionDetails CreateSubscription(string accountId, SubscriptionDetails subscriptionDetails)
        {
            var context = GetAccountsContext();
            var account = context.Accounts.FirstOrDefault(a => a.Id.Equals(accountId));
            if (account == null) return null;

            if (subscriptionDetails.IsTrial)
            {
                var existingTrial =
                    context.Subscriptions.FirstOrDefault(s => s.Account.Equals(account) && s.IsTrial);
                if (existingTrial != null)
                {
                    throw new AccountsRepositoryException(AccountsRepositoryException.AccountHasTrialSubscription, "Account already has a trial subscription.");
                }
                subscriptionDetails = SubscriptionDetails.TrialDetails;
            }

            var subscription = context.Subscriptions.Create();
            subscription.Account = account;
            subscription.Created = DateTime.UtcNow;
            subscription.IsActive = true;
            subscription.IsTrial = subscriptionDetails.IsTrial;
            subscription.Label = subscriptionDetails.Label;
            subscription.StoreCountLimit = subscriptionDetails.StoreLimit;
            subscription.StoreSizeLimit = subscriptionDetails.StoreSizeLimit;
            subscription.TotalSizeLimit = subscriptionDetails.TotalSizeLimit;
            context.SaveChanges();
            _cache.DropAccountDetails(accountId);
            foreach(var userToken in account.UserTokens.Select(ut=>ut.Id))
            {
                _cache.DropAccountDetails(userToken);
            }
            return new SubscriptionDetails(subscription);
        }
 public AccountAndSubscription(AccountDetails account, SubscriptionDetails subscription, string apiEndpoint)
 {
     Account = account;
     Subscription = subscription;
     ApiEndpoint = apiEndpoint;
 }
 public ActionResult Create(string accountId, SubscriptionDetails details)
 {
     var accounts = GetAccountsRepository();
     var newSubscription = accounts.CreateSubscription(accountId, details);
     return new JsonResult {Data = newSubscription};
 }
 public ActionResult Update(string accountId, string subscriptionId, SubscriptionDetails details)
 {
     var accounts = GetAccountsRepository();
     accounts.UpdateSubscription(subscriptionId, details);
     return new EmptyResult();
 }
 public ActionResult AddSubscription(string id, SubscriptionDetails details)
 {
     var repo = AccountsRepositoryFactory.GetAccountsRepository();
     repo.CreateSubscription(id, details);
     return RedirectToAction("Index");
 }