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}}
+
+
+ {{i18n 'discourse_patrons.admin.plans.plan.active'}}
+
+ {{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' } }