public SubscriptionRequest()
 {
     this.SubscriptionItems = new SubscriptionItemRequestList();
 }
        public void ResetSubscriptionMeteredItems()
        {
            var subscription = _gateway.Subscription.GetSubscription(_testData.SubscriptionId.ToString());
            Assert.IsNotNull(subscription);

            var product = _gateway.Products.GetProductById(subscription.ProductId.ToString());

            var request = new SubscriptionItemRequestList();
            request.Add(new SubscriptionItemRequest
            {
                ProductItemId = product.PricingPlans[0].ProductItemsList[0].Id,
                Quantity = 100,
                SubscriptionId = subscription.Id,
            });

            _gateway.Subscription.UpdateSubscriptionItems(request);

            request = new SubscriptionItemRequestList();
            request.Add(new SubscriptionItemRequest
            {
                ProductItemId = product.PricingPlans[0].ProductItemsList[0].Id,
                Quantity = 50,
                SubscriptionId = subscription.Id,
            });

            _gateway.Subscription.UpdateSubscriptionItems(request);

            var components = _gateway.Subscription.GetSubscriptionItems(subscription.Id.ToString());
            Assert.AreEqual(2, components.Count);
            Assert.AreEqual(3, components[0].ChangesHistory.Count); // 2 from this method + 1 from Add item operation

            _gateway.Subscription.ResetSubscriptionMeteredItems(subscription.Id.ToString());

            components = _gateway.Subscription.GetSubscriptionItems(subscription.Id.ToString());
            Assert.AreEqual(2, components.Count);
            Assert.AreEqual(0, components[0].Quantity);
            Assert.AreEqual(0, components[0].ChangesHistory.Count);
        }
        public void UpdateSubscriptionItems()
        {
            var subscription = _gateway.Subscription.GetSubscription(_testData.SubscriptionId.ToString());
            Assert.IsNotNull(subscription);

            var product = _gateway.Products.GetProductById(subscription.ProductId.ToString());

            var request = new SubscriptionItemRequestList();
            request.Add(new SubscriptionItemRequest
            {
                ProductItemId = product.PricingPlans[0].ProductItemsList[0].Id,
                Quantity = 100,
                SubscriptionId = subscription.Id,
            });

            _gateway.Subscription.UpdateSubscriptionItems(request);
        }
 /// <summary>
 /// Updates the subscription item.
 /// </summary>
 /// <param name="request">The request.</param>
 public void UpdateSubscriptionItems(SubscriptionItemRequestList request)
 {
     _service.Put<SubscriptionItemRequestList>(string.Format("{0}/updateitems", _gatewayURL), request);
 }
 /// <summary>
 /// Adds the subscription items.
 /// </summary>
 /// <param name="request">The request.</param>
 public void AddSubscriptionItems(SubscriptionItemRequestList request)
 {
     _service.Post<SubscriptionItemRequestList>(string.Format("{0}/additems", _gatewayURL), request);
 }
        private SubscriptionResponse AddTestSubscription(SiteResponse site)
        {
            var product = AddProduct(site.Id);

            var subscriptionItems = new SubscriptionItemRequestList();
            foreach (var item in product.PricingPlans[0].ProductItemsList)
            {
                subscriptionItems.Add(new SubscriptionItemRequest
                {
                    ProductItemId = item.Id,
                    Quantity = 5,
                    UpdateDescription = "Add new subscription",
                });
            }

            var subscriptionRequest = new SubscriptionRequest()
            {
                BillingAddress = CreateDafaultAddress(),
                CreditCard = CreateDefaultCreditCard(),
                Currency = CreateDefaultCurrency(),
                CurrentBallance = 100,
                Customer = CreateDefaultCustomer(),
                NextAssesment = DateTime.Now.AddDays(31),
                NextProduct = null,
                NextProductPricingPlan = null,
                ProductId = product.Id,
                ProductPricingPlanId = product.PricingPlans[0].Id,
                StartDate = DateTime.Now,
                SubscriptionItems = subscriptionItems,
            };
            return _gateway.Subscription.AddSubscription(site.Subdomain, subscriptionRequest);
        }