diff --git a/app/scripts/controllers/Extensions.js b/app/scripts/controllers/Extensions.js index de0d4cb..3cc396f 100644 --- a/app/scripts/controllers/Extensions.js +++ b/app/scripts/controllers/Extensions.js @@ -32,9 +32,68 @@ angular function DialogController($scope, $mdDialog, extension, $shared) { $scope.$shared = $shared; $scope.extension = extension; + $scope.isSendingEmail = false; $scope.close = function () { $mdDialog.hide(); }; + $scope.sendCredentialsEmail = function (ev) { + var prompt = $mdDialog + .prompt() + .title('Send SIP Credentials') + .textContent('Enter the email address to receive these SIP credentials.') + .placeholder('name@example.com') + .ariaLabel('Destination email') + .targetEvent(ev) + .ok('Send') + .cancel('Cancel'); + + $mdDialog.show(prompt).then(function (email) { + var normalizedEmail = (email || '').trim(); + var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + var extensionId = extension.id; + + if (!emailRegex.test(normalizedEmail)) { + $mdToast.show( + $mdToast + .simple() + .textContent('Please enter a valid email address.') + .position('top right') + .hideDelay(3000) + ); + return; + } + + if (!extensionId) { + $mdToast.show( + $mdToast + .simple() + .textContent('Could not determine extension id.') + .position('top right') + .hideDelay(3000) + ); + return; + } + + $scope.isSendingEmail = true; + Backend.post('/emailSIPCredentials', { + to_email: normalizedEmail, + extension_id: extensionId, + }).then( + function () { + $mdToast.show( + $mdToast + .simple() + .textContent('SIP credentials sent successfully.') + .position('top right') + .hideDelay(3000) + ); + }, + function () {} + )['finally'](function () { + $scope.isSendingEmail = false; + }); + }); + }; } $scope.settings = { page: 0, diff --git a/app/views/dialogs/extension-connect-info.html b/app/views/dialogs/extension-connect-info.html index b058cc7..3145a10 100644 --- a/app/views/dialogs/extension-connect-info.html +++ b/app/views/dialogs/extension-connect-info.html @@ -21,6 +21,12 @@