if user has subscription before joining group is given option to cancel personal one

This commit is contained in:
Henry Oswald
2016-03-22 16:59:47 +00:00
parent a6859e22b3
commit c554b0630d
3 changed files with 53 additions and 11 deletions
@@ -4,6 +4,7 @@ SubscriptionLocator = require("./SubscriptionLocator")
ErrorsController = require("../Errors/ErrorController")
SubscriptionDomainHandler = require("./SubscriptionDomainHandler")
_ = require("underscore")
async = require("async")
module.exports =
@@ -53,19 +54,26 @@ module.exports =
subscription: subscription
renderGroupInvitePage: (req, res)->
subscription_id = req.params.subscription_id
group_subscription_id = req.params.subscription_id
user_id = req.session.user._id
licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)
licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(group_subscription_id)
if !licence?
return ErrorsController.notFound(req, res)
SubscriptionGroupHandler.isUserPartOfGroup user_id, licence.subscription_id, (err, partOfGroup)->
jobs =
partOfGroup: (cb)->
SubscriptionGroupHandler.isUserPartOfGroup user_id, licence.group_subscription_id, cb
subscription: (cb)->
SubscriptionLocator.getUsersSubscription user_id, cb
async.series jobs, (err, results)->
{partOfGroup, subscription} = results
if partOfGroup
return res.redirect("/user/subscription/custom_account")
else
res.render "subscriptions/group/invite",
title: "Group Invitation"
subscription_id:subscription_id
group_subscription_id:group_subscription_id
licenceName:licence.name
has_personal_subscription: subscription?
beginJoinGroup: (req, res)->
subscription_id = req.params.subscription_id
@@ -2,7 +2,8 @@ extends ../../layout
block scripts
script(type='text/javascript').
window.subscription_id = '#{subscription_id}'
window.group_subscription_id = '#{group_subscription_id}'
window.has_personal_subscription = '#{has_personal_subscription}'
block content
.content.content-alt
@@ -11,12 +12,26 @@ block content
.col-md-8.col-md-offset-2
-if (query.expired)
.alert.alert-warning #{translate("email_link_expired")}
.row
div  
.row
.col-md-8.col-md-offset-2(ng-cloak)
.card(ng-controller="GroupSubscriptionInviteController")
.page-header
h1.text-centered #{translate("you_are_invited_to_group", {groupName:licenceName})}
div(ng-show="!requestSent").row.text-centered
div(ng-show="view =='personalSubscription'").row.text-centered
div #{translate("cancel_personal_subscription_first")}
.row
.col-md-12  
.row
.col-md-12
a.btn.btn.btn-default(ng-click="keepPersonalSubscription()", ng-disabled="inflight") #{translate("not_now")}
span  
a.btn.btn.btn-primary(ng-click="cancelSubscription()", ng-disabled="inflight") #{translate("cancel_your_subscription")}
div(ng-show="view =='groupSubscriptionInvite'").row.text-centered
.row
.col-md-12 #{translate("group_provides_you_with_premium_account", {groupName:licenceName})}
.row
@@ -26,10 +41,10 @@ block content
.text-center
a.btn.btn-default(href="/project") #{translate("not_now")}
span  
a.btn.btn.btn-primary(ng-click="joinGroup()") #{translate("verify_email_address")}
a.btn.btn.btn-primary(ng-click="joinGroup()", ng-disabled="inflight") #{translate("verify_email_address")}
span(ng-show="requestSent").row.text-centered.text-center
span(ng-show="view =='requestSent'").row.text-centered.text-center
.row
.col-md-12 #{translate("check_email_to_complete_the_upgrade")}
.row
@@ -3,12 +3,31 @@ define [
], (App) ->
App.controller "GroupSubscriptionInviteController", ($scope, $http) ->
$scope.requestSent = false
$scope.inflight = false
if has_personal_subscription
$scope.view = "personalSubscription"
else
$scope.view = "groupSubscriptionInvite"
$scope.keepPersonalSubscription = ->
$scope.view = "groupSubscriptionInvite"
$scope.cancelSubscription = ->
$scope.inflight = true
request = $http.post "/user/subscription/cancel", {_csrf:window.csrfToken}
request.success (data, status)->
$scope.inflight = false
$scope.view = "groupSubscriptionInvite"
request.error (data, status)->
console.log "the request failed"
$scope.joinGroup = ->
$scope.requestSent = true
request = $http.post "/user/subscription/#{subscription_id}/group/begin-join", {_csrf:window.csrfToken}
$scope.view = "requestSent"
$scope.inflight = true
request = $http.post "/user/subscription/#{group_subscription_id}/group/begin-join", {_csrf:window.csrfToken}
request.success (data, status)->
$scope.inflight = false
if status != 200 # assume request worked
$scope.requestSent = false
request.error (data, status)->