TT#129221 PBXSettings - ManagerSecretary - As PBX-Attendant (Pilot, Seat, Group), I can change my ManagerSecretary preferences
Change-Id: If966beb62e0c860b2c80803f166d410a805eff7fmr10.1.1
parent
12a514bcc9
commit
b5e79338a4
@ -0,0 +1,146 @@
|
|||||||
|
<template>
|
||||||
|
<csc-page
|
||||||
|
id="csc-page-voicebox"
|
||||||
|
class="row q-pa-lg"
|
||||||
|
>
|
||||||
|
<q-list
|
||||||
|
class="col col-xs-12 col-md-6"
|
||||||
|
>
|
||||||
|
<q-toggle
|
||||||
|
v-model="manager_secretary"
|
||||||
|
:label="$t('Manager Secretary feature')"
|
||||||
|
:disable="isNumbersRequesting || isLoading"
|
||||||
|
@input="addOrRemoveMs()"
|
||||||
|
/>
|
||||||
|
<csc-spinner
|
||||||
|
v-if="isLoading || !msConfig || !changes"
|
||||||
|
class="q-ml-xl"
|
||||||
|
/>
|
||||||
|
<q-item v-if="msConfig && changes">
|
||||||
|
<q-item-section>
|
||||||
|
<q-select
|
||||||
|
v-model="changes.secretaryNumbers"
|
||||||
|
emit-value
|
||||||
|
map-options
|
||||||
|
multiple
|
||||||
|
chips
|
||||||
|
:disable="isNumbersRequesting || isLoading || !manager_secretary"
|
||||||
|
:label="$t('Select secretary numbers')"
|
||||||
|
:options="getFullNumberOptions"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-if="hasSecretaryNumbersChanged"
|
||||||
|
v-slot:append
|
||||||
|
>
|
||||||
|
<csc-input-button-save
|
||||||
|
@click.stop="save"
|
||||||
|
/>
|
||||||
|
<csc-input-button-reset
|
||||||
|
@click.stop="resetMsConfig"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</q-select>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-list>
|
||||||
|
</csc-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import _ from 'lodash'
|
||||||
|
import {
|
||||||
|
mapGetters,
|
||||||
|
mapState
|
||||||
|
} from 'vuex'
|
||||||
|
import { mapWaitingActions } from 'vue-wait'
|
||||||
|
import CscPage from 'components/CscPage'
|
||||||
|
import CscInputButtonSave from 'components/form/CscInputButtonSave'
|
||||||
|
import CscInputButtonReset from 'components/form/CscInputButtonReset'
|
||||||
|
import CscSpinner from 'components/CscSpinner'
|
||||||
|
import { getSubscriberId } from 'src/auth'
|
||||||
|
import {
|
||||||
|
showToast
|
||||||
|
} from 'src/helpers/ui'
|
||||||
|
export default {
|
||||||
|
name: 'CscPagePbxSettingsMsConfigs',
|
||||||
|
components: {
|
||||||
|
CscPage,
|
||||||
|
CscInputButtonSave,
|
||||||
|
CscInputButtonReset,
|
||||||
|
CscSpinner
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
msConfig: null,
|
||||||
|
changes: null,
|
||||||
|
manager_secretary: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('pbx', [
|
||||||
|
'isNumbersRequesting',
|
||||||
|
'getFullNumberOptions'
|
||||||
|
]),
|
||||||
|
...mapState('callSettings', [
|
||||||
|
'subscriberPreferences'
|
||||||
|
]),
|
||||||
|
...mapGetters('user', [
|
||||||
|
'getUsername'
|
||||||
|
]),
|
||||||
|
hasSecretaryNumbersChanged () {
|
||||||
|
const changedSecretaryNumbers = _.clone(_.get(this.changes, 'secretaryNumbers', []))
|
||||||
|
const currentSecretaryNumbers = _.clone(this.msConfig.secretary_numbers)
|
||||||
|
return !_.isEqual(changedSecretaryNumbers.sort(), currentSecretaryNumbers.sort())
|
||||||
|
},
|
||||||
|
isLoading () {
|
||||||
|
return this.$wait.is('csc-pbx-manager-secretary-numbers') || this.$wait.is('csc-pbx-call-settings-load-preferences') ||
|
||||||
|
this.$wait.is('csc-pbx-call-settings-update-preferences')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async mounted () {
|
||||||
|
await this.loadSubscriberPreferencesAction()
|
||||||
|
await this.loadNumbers()
|
||||||
|
this.getMsConfig()
|
||||||
|
this.changes = this.getDefaultData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapWaitingActions('pbx', {
|
||||||
|
loadNumbers: 'csc-pbx-manager-secretary-numbers'
|
||||||
|
}),
|
||||||
|
...mapWaitingActions('callSettings', {
|
||||||
|
loadSubscriberPreferencesAction: 'csc-pbx-call-settings-load-preferences',
|
||||||
|
fieldUpdateAction: 'csc-pbx-call-settings-update-preferences'
|
||||||
|
}),
|
||||||
|
resetMsConfig () {
|
||||||
|
this.changes = this.getDefaultData()
|
||||||
|
},
|
||||||
|
getDefaultData () {
|
||||||
|
return {
|
||||||
|
secretaryNumbers: _.clone(_.get(this.msConfig, 'secretary_numbers', []))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async save () {
|
||||||
|
if (this.hasSecretaryNumbersChanged) {
|
||||||
|
await this.fieldUpdateAction({ field: 'secretary_numbers', value: this.changes.secretaryNumbers })
|
||||||
|
this.getMsConfig()
|
||||||
|
this.changes = this.getDefaultData()
|
||||||
|
showToast(this.$t('Updated {field} for manager secretary config {msConfig} successfully', {
|
||||||
|
msConfig: this.getUsername,
|
||||||
|
field: 'secretaryNumbers'
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getMsConfig () {
|
||||||
|
this.msConfig = {
|
||||||
|
id: this.subscriberPreferences.id,
|
||||||
|
secretary_numbers: this.subscriberPreferences.secretary_numbers || [],
|
||||||
|
subscriber_id: getSubscriberId()
|
||||||
|
}
|
||||||
|
this.manager_secretary = this.subscriberPreferences.manager_secretary ? this.subscriberPreferences.manager_secretary : this.manager_secretary
|
||||||
|
},
|
||||||
|
async addOrRemoveMs () {
|
||||||
|
await this.fieldUpdateAction({ field: 'manager_secretary', value: this.manager_secretary })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
Loading…
Reference in new issue