From 603ddc354baf2f2b90d8d11757fdff6281311f94 Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Thu, 24 Oct 2019 10:02:31 +1100 Subject: [PATCH] plan can be active or not --- app/controllers/admin/plans_controller.rb | 2 ++ assets/javascripts/discourse/models/admin-plan.js.es6 | 2 ++ ...lugins-discourse-patrons-products-show-plans-show.js.es6 | 2 +- .../plugins-discourse-patrons-products-show-plans-show.hbs | 6 ++++++ .../admin/plugins-discourse-patrons-products-show.hbs | 4 +++- config/locales/client.en.yml | 1 + spec/requests/admin/plans_controller_spec.rb | 5 +++++ 7 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/plans_controller.rb b/app/controllers/admin/plans_controller.rb index 818156e..d9132df 100644 --- a/app/controllers/admin/plans_controller.rb +++ b/app/controllers/admin/plans_controller.rb @@ -27,6 +27,7 @@ module DiscoursePatrons product: params[:product], trial_period_days: params[:trial_period_days], currency: SiteSetting.discourse_patrons_currency, + active: params[:active], metadata: { group_name: params[:metadata][:group_name] } ) @@ -54,6 +55,7 @@ module DiscoursePatrons params[:id], nickname: params[:nickname], trial_period_days: params[:trial_period_days], + active: params[:active], metadata: { group_name: params[:metadata][:group_name] } ) diff --git a/assets/javascripts/discourse/models/admin-plan.js.es6 b/assets/javascripts/discourse/models/admin-plan.js.es6 index 10ed2b2..6895bd0 100644 --- a/assets/javascripts/discourse/models/admin-plan.js.es6 +++ b/assets/javascripts/discourse/models/admin-plan.js.es6 @@ -36,6 +36,7 @@ const AdminPlan = Discourse.Model.extend({ trial_period_days: this.parseTrialPeriodDays, product: this.product, metadata: this.metadata, + active: this.active }; return ajax("/patrons/admin/plans", { method: "post", data }); @@ -46,6 +47,7 @@ const AdminPlan = Discourse.Model.extend({ nickname: this.nickname, trial_period_days: this.parseTrialPeriodDays, metadata: this.metadata, + active: this.active }; return ajax(`/patrons/admin/plans/${this.id}`, { method: "patch", data }); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 index 73cebf3..3698b51 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show-plans-show.js.es6 @@ -8,7 +8,7 @@ export default Discourse.Route.extend({ let plan; if(id === 'new') { - plan = AdminPlan.create({ isNew: true, product: product.get('id') }); + plan = AdminPlan.create({ active: true, isNew: true, product: product.get('id') }); } else { plan = AdminPlan.find(id); diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs index 76a1b90..371404b 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show-plans-show.hbs @@ -40,6 +40,12 @@ {{combo-box valueAttribute="value" content=model.plan.intervals value=model.plan.interval}}

+

+ + {{input type="checkbox" name="active" checked=model.plan.active}} +

diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs index 1e6cf49..f596cc2 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-products-show.hbs @@ -30,6 +30,7 @@ {{i18n 'discourse_patrons.admin.plans.plan.interval'}} {{i18n 'discourse_patrons.admin.plans.plan.created_at'}} {{i18n 'discourse_patrons.admin.plans.plan.group'}} + {{i18n 'discourse_patrons.admin.plans.plan.active'}} {{i18n 'discourse_patrons.admin.plans.plan.amount'}} {{#link-to "adminPlugins.discourse-patrons.products.show.plans.show" model.product.id "new" class="btn"}} @@ -43,6 +44,7 @@ {{plan.interval}} {{format-date plan.createdFormatted}} {{plan.metadata.group_name}} + {{plan.active}} {{plan.amount}} {{#link-to "adminPlugins.discourse-patrons.products.show.plans.show" model.product.id plan.id class="btn no-text btn-icon"}} @@ -58,7 +60,7 @@ {{/each}} - + {{#unless model.plans}}
{{i18n 'discourse_patrons.admin.products.product.plan_help'}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 9ea8861..2b8e780 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -97,6 +97,7 @@ en: trial_help: Subscriptions to this plan will automatically start with a free trial of this length group: User Group group_help: This is the discourse user group the customer gets added to when the subscription is created. + active: Active created_at: Created subscriptions: title: Subscriptions diff --git a/spec/requests/admin/plans_controller_spec.rb b/spec/requests/admin/plans_controller_spec.rb index 394c9ab..229a156 100644 --- a/spec/requests/admin/plans_controller_spec.rb +++ b/spec/requests/admin/plans_controller_spec.rb @@ -120,6 +120,11 @@ module DiscoursePatrons post "/patrons/admin/plans.json", params: { product: 'prod_walterwhite', metadata: { group_name: '' } } end + it "creates a plan with an active status" do + ::Stripe::Plan.expects(:create).with(has_entry(:active, 'false')) + post "/patrons/admin/plans.json", params: { active: 'false', metadata: { group_name: '' } } + end + it 'has a metadata' do ::Stripe::Plan.expects(:create).with(has_entry(metadata: { group_name: 'discourse-user-group-name' })) post "/patrons/admin/plans.json", params: { metadata: { group_name: 'discourse-user-group-name' } }