diff --git a/assets/linker/js/controllers/create-run-controller.coffee b/assets/linker/js/controllers/create-run-controller.coffee index f5e3d40..4dc2d23 100644 --- a/assets/linker/js/controllers/create-run-controller.coffee +++ b/assets/linker/js/controllers/create-run-controller.coffee @@ -8,7 +8,8 @@ lunchControllers.controller 'CreateRunCtrl', ['$scope', '$http', '$location', 's $scope.addInvitee = () -> $scope.invitees.push {} - $scope.removeInvitee = (index) -> + $scope.removeInvitee = (invitee) -> + index = $scope.invitees.indexOf invitee $scope.invitees.splice index, 1 $scope.create = (run,invitees) -> diff --git a/assets/linker/js/controllers/edit-run-controller.coffee b/assets/linker/js/controllers/edit-run-controller.coffee index 3d8282f..66f20bd 100644 --- a/assets/linker/js/controllers/edit-run-controller.coffee +++ b/assets/linker/js/controllers/edit-run-controller.coffee @@ -1,7 +1,7 @@ lunchControllers = angular.module 'lunchControllers' -lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', '$sce', - EditRunController = ($scope, socket, $routeParams, $sce) -> +lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', '$sce', '$location', + EditRunController = ($scope, socket, $routeParams, $sce, $location) -> $scope.show = false socket.get '/run/' + $routeParams['id'], @@ -20,8 +20,18 @@ lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', $scope.addInvitee = () -> $scope.invitees.push {} - $scope.removeInvitee = (index) -> + $scope.removeInvitee = (invitee) -> + if invitee.id + socket.delete '/invitee/destroy/' + invitee.id, (deleteResponse) -> + console.log deleteResponse + $scope.spliceInvitee invitee + else + $scope.spliceInvitee invitee + + $scope.spliceInvitee = (invitee) -> + index = $scope.invitees.indexOf invitee $scope.invitees.splice index, 1 + $scope.$apply() $scope.update = (run,invitees) -> runData = angular.copy run @@ -30,12 +40,22 @@ lunchControllers.controller 'EditRunCtrl', ['$scope', 'socket', '$routeParams', creatorInvitee.name = runData.creatorName creatorInvitee.email = runData.creatorEmail - socket.put '/run/update/' + runData.id, runData, (runResponse) -> - inviteesCreated = 0 + socket.put '/run/' + runData.id, runData, (runResponse) -> + + inviteesUpdated = 0 for i in inviteeData - socket.put '/invitee/update/' + i.id, i, (inviteeResponse) -> - inviteesCreated++ - if inviteesCreated is inviteeData.length - $location.path '/run/' + runResponse.id - $scope.$apply() + if i.id + socket.put '/invitee/' + i.id, i, (inviteeResponse) -> + inviteesUpdated++ + $scope.redirectIfAllInviteesUpdated inviteesUpdated, inviteeData.length + else + i.run_id = runData.id + socket.post '/invitee', i, (inviteeResponse) -> + inviteesUpdated++ + $scope.redirectIfAllInviteesUpdated inviteesUpdated, inviteeData.length + + $scope.redirectIfAllInviteesUpdated = (updatedCount, inviteeCount) -> + if updatedCount is inviteeCount + $location.path '/run/' + $scope.run.id + $scope.$apply() ] diff --git a/assets/linker/styles/forms.less b/assets/linker/styles/forms.less index 1515e12..d097e22 100644 --- a/assets/linker/styles/forms.less +++ b/assets/linker/styles/forms.less @@ -21,7 +21,7 @@ form { right: 5px; } } -.create-run-form { +.edit-run-form, .create-run-form { .invitees { .btn-default { margin-top: 20px; diff --git a/assets/linker/templates/run/_form.jade b/assets/linker/templates/run/_form.jade index bb837f8..0848ed8 100644 --- a/assets/linker/templates/run/_form.jade +++ b/assets/linker/templates/run/_form.jade @@ -60,7 +60,7 @@ span.glyphicon.glyphicon-ok.form-control-feedback(ng-show='inviteeForm.Name.$dirty && inviteeForm.Name.$valid') .col-xs-2.deletebtn-wrapper - button.btn.btn-block.btn-lg.btn-warning(ng-click='removeInvitee($index)') + button.btn.btn-block.btn-lg.btn-warning(ng-click='removeInvitee(i)') span.glyphicon.glyphicon-remove .col-xs-10.email-wrapper diff --git a/assets/linker/templates/run/edit.jade b/assets/linker/templates/run/edit.jade index 41e64f9..775ab1a 100644 --- a/assets/linker/templates/run/edit.jade +++ b/assets/linker/templates/run/edit.jade @@ -5,7 +5,7 @@ block pagetitle | update your lunch run block interiorcontent - .create-run-form(ng-controller='EditRunCtrl') + .edit-run-form(ng-controller='EditRunCtrl') form.row(name='form',novalidate,role='form',ng-show="show") include _form section.submit diff --git a/config/policies.js b/config/policies.js index d8be365..6c8e06b 100644 --- a/config/policies.js +++ b/config/policies.js @@ -23,14 +23,16 @@ module.exports.policies = { RunController: { '*': false, 'find': true, - 'create': true + 'create': true, + 'update': true }, InviteeController: { '*': false, 'find': true, 'create': true, - 'update': true + 'update': true, + 'destroy': true }, SessionController: {