예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <ActionResult> Edit(string id)
        {
            var productService = new ProductService();
            var prod           = await productService.GetAsync(id);

            if (prod == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var planService = new PlanService();
            var planOptions = new PlanListOptions
            {
                Limit     = 3,
                ProductId = prod.Id
            };

            var prodPlans = await planService.ListAsync(planOptions);

            var plan = prodPlans.Data.Find(x => x.ProductId.Equals(prod.Id));

            var model = new SubscriptionPlanViewModel()
            {
                ProductId = prod.Id,
                PlanId    = plan.Id,
                Name      = prod.Name,
                Amount    = Convert.ToString(Convert.ToDecimal(plan.Amount) / 100).ToString(),
                Currency  = plan.Currency,
                Interval  = plan.Interval
            };

            return(View(model));
        }
예제 #2
0
        public async Task <ActionResult> Edit(SubscriptionPlanViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var productService = new ProductService();
                var prod           = await productService.GetAsync(viewModel.ProductId);

                if (prod == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                var planService = new PlanService();
                var plan        = await planService.GetAsync(viewModel.PlanId);

                if (plan == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                var options = new ProductUpdateOptions
                {
                    Name = viewModel.Name
                };
                Product product = productService.Update(prod.Id, options);

                return(RedirectToAction("Index"));
            }

            return(View(viewModel));
        }
예제 #3
0
        /// <summary>
        /// Map
        /// </summary>
        /// <param name="product"></param>
        /// <param name="currency"></param>
        /// <returns></returns>
        public static SubscriptionPlanViewModel Map(Product product, Currency currency)
        {
            var subscription = new SubscriptionPlanViewModel
            {
                Id               = product.Id,
                Currency         = currency,
                DisplayName      = product.DisplayName,
                Description      = product.Description,
                ShortDescription = product.ShortDescription,
                Attributes       = product.ProductAttributes?.Select(x => new AttributeViewModel
                {
                    Name  = x.ProductAttribute?.Name,
                    Value = x.Value
                }),
                Variations = product.ProductVariations.Select(x => new VariationViewModel
                {
                    Id      = x.Id,
                    Price   = x.Price,
                    Options = x.ProductVariationDetails?.Select(y => new VariationItemViewModel
                    {
                        Name  = y.ProductOption?.Name,
                        Value = y.Value
                    })
                })
            };


            return(subscription);
        }
예제 #4
0
        public ActionResult Create()
        {
            var model = new SubscriptionPlanViewModel()
            {
                Name     = "",
                Amount   = "0",
                Currency = "gbp",
                Interval = "month"
            };

            return(View(model));
        }
예제 #5
0
        public ActionResult Create(SubscriptionPlanViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            try
            {
                var productOptions = new ProductCreateOptions
                {
                    Name = viewModel.Name,
                    Type = "service",
                };
                var     productService = new ProductService();
                Product product        = productService.Create(productOptions);

                if (product != null)
                {
                    var planOptions = new PlanCreateOptions();
                    planOptions.Currency  = viewModel.Currency;
                    planOptions.Interval  = viewModel.Interval;
                    planOptions.Nickname  = product.Name;
                    planOptions.Amount    = Convert.ToInt64(Convert.ToDecimal(viewModel.Amount) * 100);
                    planOptions.ProductId = product.Id;

                    var  planService = new PlanService();
                    Plan plan        = planService.Create(planOptions);
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
            }

            return(RedirectToAction("Index"));
        }