diff --git a/public/scripts/controllers/camp_edit.js b/public/scripts/controllers/camp_edit.js index c9179937b..7ac9fe880 100644 --- a/public/scripts/controllers/camp_edit.js +++ b/public/scripts/controllers/camp_edit.js @@ -1,33 +1,88 @@ -app.controller("campEditController", ($scope, $http, $filter) => { - var camp_id = document.querySelector('#meta__camp_id').value; - $scope.status_options = ['open', 'closed'] - $scope.noise_level_options = ['quiet', 'medium', 'noisy', 'very noisy'] - - var _getMembers = () => { - $http.get(`/camps/${camp_id}/members`).then((res) => { - var members = res.data.members; - var _members = []; - var approved_members = []; - for (var i in members) { - if (['approved', 'pending', 'pending_mgr', 'approved_mgr', 'rejected'].indexOf(members[i].member_status) > -1) { - _members.push(members[i]); - } - if (['approved', 'approved_mgr'].indexOf(members[i].member_status) > -1) { - approved_members.push(members[i]); - } +var angular_getMembers = function ($http, $scope, camp_id) { + $http.get(`/camps/${camp_id}/members`).then((res) => { + var members = res.data.members; + var _members = []; + var approved_members = []; + for (var i in members) { + if (['approved', 'pending', 'pending_mgr', 'approved_mgr', 'rejected'].indexOf(members[i].member_status) > -1) { + _members.push(members[i]); + } + if (['approved', 'approved_mgr'].indexOf(members[i].member_status) > -1) { + approved_members.push(members[i]); } - $scope.members = _members; - $scope.approved_members = approved_members; + } + $scope.members = _members; + $scope.approved_members = approved_members; + }); +} +var angular_updateUser = function ($http, $scope, action_type, user_rec) { + var camp_id = user_rec.camp_id; + var user_name = user_rec.user_name; + var user_id = user_rec.user_id; + var lang = $scope.lang; + if (lang === undefined) { + lang = 'he'; + } + var tpl; + if (lang === "he") { + tpl = { + alert_title: "האם את/ה בטוח?", + alert_text: "האם את/ה בטוח שתרצה לבצע " + action_type + " את משתמש " + user_name + "?", + alert_success_1: action_type + "!", + alert_success_2: "משתמש " + user_name + action_type, + alert_success_3: " בהצלחה", + }; + } else { + tpl = { + alert_title: "Are you sure?", + alert_text: "Are you sure you would like to " + action_type + " " + user_name + "?", + alert_success_1: action_type + "!", + alert_success_2: user_name + "has been " + action_type, + alert_success_3: "success", + }; + } + + sweetAlert({ + title: tpl.alert_title, + text: tpl.alert_text, + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "Yes", + closeOnConfirm: false + }, + () => { + var request_str = `/camps/${camp_id}/members/${user_id}/${action_type}` + $http.get(request_str).then((res) => { + sweetAlert(tpl.alert_success_1, tpl.alert_success_1, "success"); + $scope.getMembers(camp_id); + }).catch((err) => { + sweetAlert("Error!", "Something went wrong, please try again later " + err, "error"); + }) }); +} + +app.controller("campEditController", ($scope, $http, $filter) => { + var camp_id = document.querySelector('#meta__camp_id').value; + $scope.status_options = ['open', 'closed']; + $scope.noise_level_options = ['quiet', 'medium', 'noisy', 'very noisy']; + $scope.getMembers = () => { + angular_getMembers($http, $scope, camp_id); + setTimeout(() => { + innerHeightChange(); + }, 500) } $scope.changeOrderBy = (orderByValue) => { $scope.orderMembers = orderByValue; } if (typeof camp_id !== 'undefined') { - _getMembers(); + $scope.current_camp_id=camp_id; + $scope.getMembers(); } + $scope.lang = document.getElementById('meta__lang').value; + $scope.addMember = () => { - var camp_id = document.querySelector('#meta__camp_id').value; + var camp_id = $scope.current_camp_id; var new_user_email = $scope.camps_members_add_member var data = { @@ -37,55 +92,19 @@ app.controller("campEditController", ($scope, $http, $filter) => { $http.post(`/camps/${camp_id}/members/add`, data).then(function (res) { // update table with new data - _getMembers(); + $scope.getMembers(); }).catch((err) => { sweetAlert("Error!", "Something went wrong, please try again later " + err, "error"); }); } $scope.updateUser = (user_name, user_id, action_type) => { - var camp_id = document.getElementById('meta__camp_id').value; - var lang = document.getElementById('meta__lang').value; - var tpl; - if (lang === "he") { - tpl = { - alert_title: "האם את/ה בטוח?", - alert_text: "האם את/ה בטוח שתרצה לבצע " + action_type + " את משתמש " + user_name + "?", - alert_success_1: action_type + "!", - alert_success_2: "משתמש " + user_name + action_type, - alert_success_3: " בהצלחה", - }; - } else { - tpl = { - alert_title: "Are you sure?", - alert_text: "Are you sure you would like to " + action_type + " " + user_name + "?", - alert_success_1: action_type + "!", - alert_success_2: user_name + "has been " + action_type, - alert_success_3: "success", - }; + var camp_id = $scope.current_camp_id; + var user_rec = { + camp_id: camp_id, + user_name: user_name, + user_id: user_id, } - - sweetAlert({ - title: tpl.alert_title, - text: tpl.alert_text, - type: "warning", - showCancelButton: true, - confirmButtonColor: "#DD6B55", - confirmButtonText: "Yes", - closeOnConfirm: false - }, - () => { - var request_str = `/camps/${camp_id}/members/${user_id}/${action_type}` - $http.get(request_str).then((res) => { - sweetAlert(tpl.alert_success_1, tpl.alert_success_1, "success"); - // TODO - check if table update is needed - setTimeout(() => { - innerHeightChange() - }, 500) - _getMembers(); - }).catch((err) => { - sweetAlert("Error!", "Something went wrong, please try again later " + err, "error"); - }) - }); + angular_updateUser($http, $scope, action_type, user_rec); } }); diff --git a/public/scripts/controllers/camp_manage.js b/public/scripts/controllers/camp_manage.js index 7fcf0ae15..c0aea0930 100644 --- a/public/scripts/controllers/camp_manage.js +++ b/public/scripts/controllers/camp_manage.js @@ -1,26 +1,26 @@ -app.controller("manageCampsController", function($scope, $http, $filter) { - $http.get('/camps').then(function(res) { +app.controller("manageCampsController", function ($scope, $http, $filter) { + $http.get('/camps_all').then(function (res) { $scope.camps = res.data.camps; setTimeout(() => { - innerHeightChange() - }, 500) + innerHeightChange() + }, 500) }); $scope.removeCamp = (camp_id) => { - var agree_remove = confirm('Remove camp\n\n\nThis action will remove camp #' + camp_id + '.\n\n\n---\n Are you sure?'); - if (agree_remove) { - // NOT WORKING SOMEHOW - // $http.post(`/camps/${camp_id}/remove`, (res) => { - // console.log(res); - // window.location.reload(); - // }); - $.post('/camps/' + camp_id + '/remove', (res) => { - window.location.reload(); - }) - } + var agree_remove = confirm('Remove camp\n\n\nThis action will remove camp #' + camp_id + '.\n\n\n---\n Are you sure?'); + if (agree_remove) { + // NOT WORKING SOMEHOW + // $http.post(`/camps/${camp_id}/remove`, (res) => { + // console.log(res); + // window.location.reload(); + // }); + $.post('/camps/' + camp_id + '/remove', (res) => { + window.location.reload(); + }) + } } - $scope.changeOrderBy = function(orderByValue) { + $scope.changeOrderBy = function (orderByValue) { $scope.orderCamps = orderByValue; } }); @@ -33,14 +33,25 @@ app.controller("membersController", ($scope, $http) => { $scope.getMembers = (camp_id) => { if (typeof camp_id !== 'undefined') { - $http.get(`/camps/${camp_id}/members`).then((res) => { - $scope.members = res.data.members; - setTimeout(() => { - innerHeightChange() - }, 500) - }); + $scope.current_camp_id = camp_id; + angular_getMembers($http, $scope, camp_id); + setTimeout(() => { + innerHeightChange() + }, 500); + } + } + $scope.updateUser = (user_name, user_id, action_type) => { + var camp_id = $scope.current_camp_id; + var lang = 'he'; + var user_rec = { + camp_id: camp_id, + user_name: user_name, + user_id: user_id, + lang: lang, } + angular_updateUser($http, $scope, action_type, user_rec); } + $scope.changeOrderBy = (orderByValue) => { $scope.orderMembers = orderByValue; } diff --git a/routes/api_camps_routes.js b/routes/api_camps_routes.js index 5c65a608b..310cb8e22 100644 --- a/routes/api_camps_routes.js +++ b/routes/api_camps_routes.js @@ -3,9 +3,7 @@ var Camp = require('../models/camp').Camp; const constants = require('../models/constants.js'); var config = require('config'); const knex = require('../libs/db').knex; - const userRole = require('../libs/user_role'); - var mail = require('../libs/mail'), mailConfig = config.get('mail'); @@ -252,6 +250,7 @@ module.exports = (app, passport) => { new_status = 'pending'; } else if (action === "request_mgr") { new_status = 'pending_mgr'; + mail_delivery.to_mail = user.email; mail_delivery.subject = 'Spark: you have been requested to join camp'; mail_delivery.template = 'emails/camps/member_request'; if (!user) { @@ -590,6 +589,7 @@ module.exports = (app, passport) => { * notifiying a user wants to join his camp * @return {boolean} should return true if mail delivered. FIXME: in mail.js */ + console.log('Trying to send mail to '+recipient+' from '+mailConfig.from+': '+subject+', template '+template); mail.send( recipient, mailConfig.from, diff --git a/views/pages/camps/edit.jade b/views/pages/camps/edit.jade index 4ee2caed9..e251fffe8 100644 --- a/views/pages/camps/edit.jade +++ b/views/pages/camps/edit.jade @@ -252,39 +252,7 @@ block content .row .col-xs-12 - table.table.table-striped.table-hover - thead - tr - th(ng-click='changeOrderBy("id")') # - th(ng-click='changeOrderBy("name")')=t('camps:members.name') - th(ng-click='changeOrderBy("email")')=t('camps:members.email') - th(ng-click='changeOrderBy("phone")')=t('camps:members.phone') - th(ng-click='changeOrderBy("status")')=t('camps:members.status') - th(ng-click='changeOrderBy("hasTicket")')=t('camps:members.ticket_count') - //- th(ng-click='changeOrderBy("earlyArrival")')=t('camps:members.early_arrival') - th()=t('camps:members.actions') - tbody - tr(ng-repeat="member in members | filter: searchMembers | orderBy: orderMembers") - td {{member.user_id}} - td {{member.name}} - td {{member.email}} - td {{member.cell_phone}} - td {{member.member_status_i18n}} - td {{member.hasTicket}} - //- td {{member.earlyArrival ? 'yes':'no'}} - td - a.cursor-p(ng-click='updateUser(member.name, member.user_id, "reject")', ng-if="member.can_reject") - span(class='glyphicon glyphicon-remove') - span(class='sr-only' aria-hidden='false') Reject user - a.cursor-p(ng-click='updateUser(member.name, member.user_id, "approve")', ng-if="member.can_approve") - span(class='glyphicon glyphicon-ok') - span(class='sr-only' aria-hidden='false') Approve user - a.cursor-p(ng-click='updateUser(member.name, member.user_id, "manager")', ng-if="member.can_approve_mgr") - span(class='glyphicon glyphicon-king') - span(class='sr-only' aria-hidden='false') Approve user as manager - a.cursor-p(ng-click='updateUser(member.name, member.user_id, "remove")', ng-if="member.can_remove") - span(class='glyphicon glyphicon-remove') - span(class='sr-only' aria-hidden='false') Remove user + include partials/members_table //- Card 4 .card.card-forth.card-hide h4=t('camps:edit.upload_header') diff --git a/views/pages/camps/index_admin.jade b/views/pages/camps/index_admin.jade index 5fa1d487a..f9e3dc3af 100644 --- a/views/pages/camps/index_admin.jade +++ b/views/pages/camps/index_admin.jade @@ -81,21 +81,7 @@ block content //- Card 3 .card.card-third.card__padding--even.card-hide.col-xs-12.table-responsive h4=t('camps:admin_index.docs_table') - table.table.table-striped.table-hover - thead - tr.headers - //- TODO - fix header names - th # - th.camp_name_en=t('camps:stats.name_en') - th.contact_person=t('camps:stats.contact_person') - th.status=t('camps:stats.status') - th.hidden-xs=t('camps:stats.last_update') - th.hidden-xs=t('camps:stats.created_at') - th.published=t('camps:stats.published') - th.facebook_page_url=t('camps:stats.facebook_page_url') - th.admin-edit=t('camps:stats.edit') - th.admin-remove=t('camps:stats.remove') - tbody + //- Card 4 .choose_name.card.card-forth.card__padding--even.card-hide.col-xs-12 h2=t('camps:new.header_title') diff --git a/views/pages/camps/partials/members_table.jade b/views/pages/camps/partials/members_table.jade index 21c8ccd23..4ce988543 100644 --- a/views/pages/camps/partials/members_table.jade +++ b/views/pages/camps/partials/members_table.jade @@ -1,26 +1,33 @@ table.table.table-striped.table-hover - thead - tr - th(ng-click='changeOrderBy("id")') # - th(ng-click='changeOrderBy("name")')=t('camps:members.name') - if userIs('admin') - th(ng-click='changeOrderBy("email")')=t('camps:members.email') - th(ng-click='changeOrderBy("phone")')=t('camps:members.phone') - if userIs('admin') - th(ng-click='changeOrderBy("status")')=t('camps:members.status') - if userIs('admin') - th(ng-click='changeOrderBy("hasTicket")')=t('camps:members.ticket_count') - th(ng-click='changeOrderBy("earlyArrival")')=t('camps:members.early_arrival') - tbody - tr(ng-repeat="member in members | filter: searchMembers | orderBy: orderMembers") - td {{member.user.user_id}} - td {{[member.user.first_name, member.user.last_name].join(' ')}} - if userIs('admin') - td {{member.user.email}} - td {{member.user.cell_phone}} - if userIs('admin') - td - span.label(ng-class="member.status === 'approved' ? 'label-success':'label-default'") {{member.status}} - if userIs('admin') - td {{member.user.hasTicket}} - td {{member.user.earlyArrival ? 'yes':'no'}} + thead + tr + th(ng-click='changeOrderBy("id")') # + th(ng-click='changeOrderBy("name")')=t('camps:members.name') + th(ng-click='changeOrderBy("email")')=t('camps:members.email') + th(ng-click='changeOrderBy("phone")')=t('camps:members.phone') + th(ng-click='changeOrderBy("status")')=t('camps:members.status') + th(ng-click='changeOrderBy("hasTicket")')=t('camps:members.ticket_count') + //- th(ng-click='changeOrderBy("earlyArrival")')=t('camps:members.early_arrival') + th()=t('camps:members.actions') + tbody + tr(ng-repeat="member in members | filter: searchMembers | orderBy: orderMembers") + td {{member.user_id}} + td {{member.name}} + td {{member.email}} + td {{member.cell_phone}} + td {{member.member_status_i18n}} + td {{member.hasTicket}} + //- td {{member.earlyArrival ? 'yes':'no'}} + td + a.cursor-p(ng-click='updateUser(member.name, member.user_id, "reject")', ng-if="member.can_reject") + span(class='glyphicon glyphicon-remove') + span(class='sr-only' aria-hidden='false') Reject user + a.cursor-p(ng-click='updateUser(member.name, member.user_id, "approve")', ng-if="member.can_approve") + span(class='glyphicon glyphicon-ok') + span(class='sr-only' aria-hidden='false') Approve user + a.cursor-p(ng-click='updateUser(member.name, member.user_id, "manager")', ng-if="member.can_approve_mgr") + span(class='glyphicon glyphicon-king') + span(class='sr-only' aria-hidden='false') Approve user as manager + a.cursor-p(ng-click='updateUser(member.name, member.user_id, "remove")', ng-if="member.can_remove") + span(class='glyphicon glyphicon-remove') + span(class='sr-only' aria-hidden='false') Remove user