/// <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)); }
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)); }
/// <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); }
public ActionResult Create() { var model = new SubscriptionPlanViewModel() { Name = "", Amount = "0", Currency = "gbp", Interval = "month" }; return(View(model)); }
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")); }