MT#62145 Fix error handling in CscPageCustomerPhonebookAdd and in CscPageSubscriberPhonebookAdd

Change-Id: I6ee8dbe7d71ed09c7b54e4a6c286abef50cff03f
(cherry picked from commit b6445fbf18)
mr12.5
Hugo Zigha 2 months ago committed by Debora Crescenzo
parent dc3e3d32cb
commit 1fe6765638

@ -43,7 +43,7 @@
:label="$t('Number')" :label="$t('Number')"
:error="numberError" :error="numberError"
:error-message="numberErrorMessage" :error-message="numberErrorMessage"
@update:model-value="v$.formData.number.$touch()" @update:model-value="numberUpdated()"
/> />
</q-list> </q-list>
</q-item> </q-item>
@ -58,6 +58,7 @@
<q-btn <q-btn
icon="check" icon="check"
:label="$t('Confirm')" :label="$t('Confirm')"
:disable="disableSaveButton()"
unelevated unelevated
text-color="primary" text-color="primary"
@click="confirm" @click="confirm"
@ -70,6 +71,7 @@ import { required } from 'vuelidate/lib/validators'
import { mapWaitingActions } from 'vue-wait' import { mapWaitingActions } from 'vue-wait'
import CscPageSticky from 'components/CscPageSticky' import CscPageSticky from 'components/CscPageSticky'
import useValidate from '@vuelidate/core' import useValidate from '@vuelidate/core'
import { showGlobalError } from 'src/helpers/ui'
export default { export default {
name: 'CscPageCustomerPhonebookAdd', name: 'CscPageCustomerPhonebookAdd',
components: { components: {
@ -119,6 +121,22 @@ export default {
this.$router.push('/user/pbx-configuration/customer-phonebook/') this.$router.push('/user/pbx-configuration/customer-phonebook/')
this.$emit('cancel') this.$emit('cancel')
}, },
disableSaveButton () {
return this.v$.formData.$invalid
},
numberUpdated () {
this.v$.formData.number.$touch()
const errorsTab = this.v$.formData.number.$errors
if (errorsTab && errorsTab.length > 0 && errorsTab[0].$validator === 'required') {
this.numberErrorMessage = this.$t('{field} is required', {
field: this.$t('Number')
})
this.numberError = true
} else {
this.numberErrorMessage = ''
this.numberError = false
}
},
async confirm () { async confirm () {
try { try {
await this.createPhonebookCustomer(this.formData) await this.createPhonebookCustomer(this.formData)
@ -128,7 +146,7 @@ export default {
this.numberError = true this.numberError = true
this.numberErrorMessage = this.$t('This number is already in use.') this.numberErrorMessage = this.$t('This number is already in use.')
} else { } else {
console.error('An error occurred:', error) showGlobalError(this.$t('An error occurred:', error.response.data.message))
} }
} }
} }

@ -41,9 +41,9 @@
<q-input <q-input
v-model="formData.number" v-model="formData.number"
:label="$t('Number')" :label="$t('Number')"
:error="v$.formData.number.$errors.length > 0" :error="numberError"
:error-message="numberErrorMessage" :error-message="numberErrorMessage"
@update:model-value="v$.formData.number.$touch()" @update:model-value="numberUpdated()"
/> />
<q-toggle <q-toggle
v-model="formData.shared" v-model="formData.shared"
@ -62,6 +62,7 @@
<q-btn <q-btn
icon="check" icon="check"
:label="$t('Confirm')" :label="$t('Confirm')"
:disable="disableSaveButton()"
unelevated unelevated
text-color="primary" text-color="primary"
@click="confirm" @click="confirm"
@ -74,6 +75,7 @@ import { required } from 'vuelidate/lib/validators'
import { mapWaitingActions } from 'vue-wait' import { mapWaitingActions } from 'vue-wait'
import CscPageSticky from 'components/CscPageSticky' import CscPageSticky from 'components/CscPageSticky'
import useValidate from '@vuelidate/core' import useValidate from '@vuelidate/core'
import { showGlobalError } from 'src/helpers/ui'
export default { export default {
name: 'CscPageSubscriberPhonebookAdd', name: 'CscPageSubscriberPhonebookAdd',
components: { components: {
@ -92,7 +94,9 @@ export default {
data () { data () {
return { return {
formData: this.getDefaultFormData(), formData: this.getDefaultFormData(),
v$: useValidate() v$: useValidate(),
numberErrorMessage: '',
numberError: false
} }
}, },
computed: { computed: {
@ -102,20 +106,9 @@ export default {
return this.$t('{field} is required', { return this.$t('{field} is required', {
field: this.$t('Name') field: this.$t('Name')
}) })
} else {
return ''
} }
},
numberErrorMessage () {
const errorsTab = this.v$.formData.number.$errors
if (errorsTab && errorsTab.length > 0 && errorsTab[0].$validator === 'required') {
return this.$t('{field} is required', {
field: this.$t('Number')
})
} else {
return '' return ''
} }
}
}, },
methods: { methods: {
...mapWaitingActions('user', { ...mapWaitingActions('user', {
@ -128,13 +121,38 @@ export default {
shared: false shared: false
} }
}, },
disableSaveButton () {
return this.v$.formData.$invalid
},
numberUpdated () {
this.v$.formData.number.$touch()
const errorsTab = this.v$.formData.number.$errors
if (errorsTab && errorsTab.length > 0 && errorsTab[0].$validator === 'required') {
this.numberErrorMessage = this.$t('{field} is required', {
field: this.$t('Number')
})
this.numberError = true
} else {
this.numberErrorMessage = ''
this.numberError = false
}
},
cancel () { cancel () {
this.$router.push('/user/subscriber-phonebook/') this.$router.push('/user/subscriber-phonebook/')
this.$emit('cancel') this.$emit('cancel')
}, },
async confirm () { async confirm () {
try {
await this.createPhonebookSubscriber(this.formData) await this.createPhonebookSubscriber(this.formData)
await this.$router.push('/user/subscriber-phonebook/') await this.$router.push('/user/subscriber-phonebook/')
} catch (error) {
if (error.response && error.response.status === 422) {
this.numberError = true
this.numberErrorMessage = this.$t('This number is already in use.')
} else {
showGlobalError(this.$t('An error occurred:', error.response.data.message))
}
}
} }
} }
} }

Loading…
Cancel
Save