salix/modules/client/front/sms/index.js

52 lines
1.5 KiB
JavaScript
Raw Normal View History

import ngModule from '../module';
2020-03-17 10:17:50 +00:00
import Section from 'salix/components/section';
import './style.scss';
2020-03-17 10:17:50 +00:00
class Controller extends Section {
open() {
2020-03-17 10:17:50 +00:00
this.$.SMSDialog.show();
}
2020-01-14 08:10:54 +00:00
charactersRemaining() {
2020-03-17 10:17:50 +00:00
const element = this.$.message;
2020-02-14 11:01:17 +00:00
const value = element.input.value;
2020-01-14 08:10:54 +00:00
2020-02-14 11:01:17 +00:00
const maxLength = 160;
const textAreaLength = new Blob([value]).size;
return maxLength - textAreaLength;
2020-01-14 08:10:54 +00:00
}
onResponse(response) {
2019-10-30 15:57:14 +00:00
if (response === 'accept') {
2020-02-10 12:22:43 +00:00
try {
if (!this.sms.destination)
throw new Error(`The destination can't be empty`);
if (!this.sms.message)
throw new Error(`The message can't be empty`);
2020-02-14 11:01:17 +00:00
if (this.charactersRemaining() < 0)
throw new Error(`The message it's too long`);
2020-02-10 12:22:43 +00:00
this.$http.post(`Clients/${this.$params.id}/sendSms`, this.sms).then(res => {
this.vnApp.showMessage(this.$t('SMS sent!'));
2020-02-10 12:22:43 +00:00
if (res.data) this.emit('send', {response: res.data});
});
} catch (e) {
this.vnApp.showError(this.$t(e.message));
2020-02-10 12:22:43 +00:00
return false;
}
}
2020-02-10 12:22:43 +00:00
return true;
}
}
Controller.$inject = ['$element', '$scope', '$http', '$translate', 'vnApp'];
ngModule.vnComponent('vnClientSms', {
template: require('./index.html'),
controller: Controller,
bindings: {
sms: '<',
}
});