61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
import ngModule from '../module';
|
|
import Component from 'core/lib/component';
|
|
import './style.scss';
|
|
|
|
class Controller extends Component {
|
|
constructor($element, $scope, $http, $translate, vnApp) {
|
|
super($element, $scope);
|
|
|
|
this.$scope = $scope;
|
|
this.$http = $http;
|
|
this.$translate = $translate;
|
|
this.vnApp = vnApp;
|
|
}
|
|
|
|
open() {
|
|
this.$scope.SMSDialog.show();
|
|
}
|
|
|
|
charactersRemaining() {
|
|
const element = this.$scope.message;
|
|
const value = element.input.value;
|
|
|
|
const maxLength = 160;
|
|
const textAreaLength = new Blob([value]).size;
|
|
return maxLength - textAreaLength;
|
|
}
|
|
|
|
onResponse(response) {
|
|
if (response === 'accept') {
|
|
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`);
|
|
if (this.charactersRemaining() < 0)
|
|
throw new Error(`The message it's too long`);
|
|
|
|
this.$http.post(`Tickets/${this.$params.id}/sendSms`, this.sms).then(res => {
|
|
this.vnApp.showMessage(this.$translate.instant('SMS sent!'));
|
|
|
|
if (res.data) this.emit('send', {response: res.data});
|
|
});
|
|
} catch (e) {
|
|
this.vnApp.showError(this.$translate.instant(e.message));
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
Controller.$inject = ['$element', '$scope', '$http', '$translate', 'vnApp'];
|
|
|
|
ngModule.component('vnTicketSms', {
|
|
template: require('./index.html'),
|
|
controller: Controller,
|
|
bindings: {
|
|
sms: '<',
|
|
}
|
|
});
|