diff --git a/client/src/app/admin/panel/dashboard/admin-panel-my-account.js b/client/src/app/admin/panel/dashboard/admin-panel-my-account.js index 2f53b03d..336bd442 100644 --- a/client/src/app/admin/panel/dashboard/admin-panel-my-account.js +++ b/client/src/app/admin/panel/dashboard/admin-panel-my-account.js @@ -29,6 +29,7 @@ class AdminPanelMyAccount extends React.Component { profilePic: this.props.userProfilePic, level: this.props.userLevel * 1, departments: this.props.userDepartments, + sendEmailOnNewTicket: this.props.userSendEmailOnNewTicket, onChange: () => this.props.dispatch(SessionActions.getUserData(null, null, true)) }; } diff --git a/client/src/app/admin/panel/staff/staff-editor.js b/client/src/app/admin/panel/staff/staff-editor.js index a9c0f93c..9b55cff6 100644 --- a/client/src/app/admin/panel/staff/staff-editor.js +++ b/client/src/app/admin/panel/staff/staff-editor.js @@ -27,6 +27,7 @@ class StaffEditor extends React.Component { level: React.PropTypes.number.isRequired, tickets: React.PropTypes.array.isRequired, departments: React.PropTypes.array.isRequired, + sendEmailOnNewTicket: React.PropTypes.bool, onChange: React.PropTypes.func, onDelete: React.PropTypes.func }; @@ -40,7 +41,8 @@ class StaffEditor extends React.Component { level: this.props.level - 1, message: null, loadingPicture: false, - departments: this.getUserDepartments() + departments: this.getUserDepartments(), + sendEmailOnNewTicket: this.props.sendEmailOnNewTicket }; render() { @@ -95,7 +97,7 @@ class StaffEditor extends React.Component { {i18n('UPDATE_PASSWORD')} - {(!this.props.myAccount) ? this.renderLevelForm() : null} + {(this.props.myAccount) ? this.renderSendEmailOnNewTicketForm() : this.renderLevelForm()} @@ -137,6 +139,9 @@ class StaffEditor extends React.Component { case 'DEPARTMENTS': message = 'DEPARTMENTS_UPDATED'; break; + case 'EMAIL_SETTING': + message = 'EMAIL_SETTING_UPDATED'; + break; case 'FAIL': message = 'FAILED_EDIT_STAFF'; break; @@ -145,6 +150,18 @@ class StaffEditor extends React.Component { return {i18n(message)}; } + renderSendEmailOnNewTicketForm() { + return ( +
+ +
this.setState({sendEmailOnNewTicket: form.sendEmailOnNewTicket})} onSubmit={this.onSubmit.bind(this, 'EMAIL_SETTING')}> + + {i18n('UPDATE')} + +
+ ); + } + renderLevelForm() { return (
@@ -273,6 +290,7 @@ class StaffEditor extends React.Component { path: '/staff/edit', data: { staffId: this.props.staffId, + sendEmailOnNewTicket: form.sendEmailOnNewTicket, email: form.email, password: form.password, level: (form.level !== undefined) ? form.level + 1 : null, diff --git a/client/src/app/admin/panel/staff/staff-editor.scss b/client/src/app/admin/panel/staff/staff-editor.scss index f3bbd162..6ddfa0ff 100644 --- a/client/src/app/admin/panel/staff/staff-editor.scss +++ b/client/src/app/admin/panel/staff/staff-editor.scss @@ -141,10 +141,17 @@ &__update-email, &__update-password, - &__update-level { + &__update-level, + &__update-email-setting { position: relative; } + &__update-email-setting { + margin-top: 28px; + margin-bottom: 20px; + text-align: left; + } + &__departments { border: 1px solid $grey; padding: 20px 50px; diff --git a/client/src/data/fixtures/staff-fixtures.js b/client/src/data/fixtures/staff-fixtures.js index 77e47603..f86ea68a 100644 --- a/client/src/data/fixtures/staff-fixtures.js +++ b/client/src/data/fixtures/staff-fixtures.js @@ -11,6 +11,7 @@ module.exports = [ name: 'Emilia Clarke', email: 'staff@opensupports.com', profilePic: '', + sendEmailOnNewTicket: true, level: 3, staff: true, departments: [ diff --git a/client/src/data/fixtures/user-fixtures.js b/client/src/data/fixtures/user-fixtures.js index 2ff9801b..65bb8fa2 100644 --- a/client/src/data/fixtures/user-fixtures.js +++ b/client/src/data/fixtures/user-fixtures.js @@ -156,6 +156,7 @@ module.exports = [ name: 'Kurt Gödel', email: 'kurt@currycurrylady.hs', verified: false, + sendEmailOnNewTicket: true, tickets: _.times(13).map(() => { return { ticketNumber: '118551', @@ -375,6 +376,7 @@ module.exports = [ data: { name: 'Haskell Curry', email: 'haskell@lambda.com', + sendEmailOnNewTicket: true, tickets: [ { ticketNumber: '445441', diff --git a/client/src/data/languages/en.js b/client/src/data/languages/en.js index 1fbf0306..26c8c451 100644 --- a/client/src/data/languages/en.js +++ b/client/src/data/languages/en.js @@ -176,6 +176,7 @@ export default { 'HOME': 'Home', 'TICKET_NUMBER': 'Ticket number', 'NEXT': 'Next', + 'SEND_EMAIL_ON_NEW_TICKET': 'Send email on new ticket', 'CHART_CREATE_TICKET': 'Tickets created', 'CHART_CLOSE': 'Tickets closed', diff --git a/client/src/reducers/session-reducer.js b/client/src/reducers/session-reducer.js index a51d7e67..436516dc 100644 --- a/client/src/reducers/session-reducer.js +++ b/client/src/reducers/session-reducer.js @@ -113,7 +113,8 @@ class SessionReducer extends Reducer { userProfilePic: userData.profilePic, userLevel: userData.level, userDepartments: userData.departments, - userTickets: userData.tickets + userTickets: userData.tickets, + userSendEmailOnNewTicket: userData.sendEmailOnNewTicket }); } @@ -131,7 +132,8 @@ class SessionReducer extends Reducer { userLevel: userData.level, userDepartments: userData.departments, userTickets: userData.tickets, - userId: userId + userId: userId, + userSendEmailOnNewTicket: userData.sendEmailOnNewTicket }); }