Kaynağa Gözat

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

Henry Oswald 10 yıl önce
ebeveyn
işleme
c554b0630d

+ 12 - 4
services/web/app/coffee/Features/Subscription/SubscriptionGroupController.coffee

@@ -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

+ 19 - 4
services/web/app/views/subscriptions/group/invite.jade

@@ -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

+ 22 - 3
services/web/public/coffee/main/subscription/group-subscription-invite-controller.coffee

@@ -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)->