d26deb43c3e243333ee2a203aa01bb22e7c27485
[motion.git] / server / api / user / user.ami.js
1 'use strict';
2
3 var fs = require('fs');
4 var util = require('util');
5 var path = require('path');
6 var config = require('../../config/environment');
7 var User = require('../../models').User;
8 var VoiceExtension = require('../../models').VoiceExtension;
9
10 exports.register = function (ami) {
11   User.afterCreate(function (doc) {
12     createCallerID(doc);
13     createExtension(doc);
14   })
15   User.afterUpdate(function (doc) {
16     updateExtension(doc);
17     createCallerID(doc);
18   })
19 }
20
21
22 function createCallerID(doc) {
23   if (doc.name && doc.internal) {
24     doc.callerid = util.format('"%s" <%s>', doc.name, doc.internal);
25     doc.save();
26   }
27
28   return;
29 }
30
31 function updateExtension(doc) {
32   if (doc.changed('name')) {
33     doc
34       .getUserExtensions()
35       .then(function (userExtensions) {
36         userExtensions.forEach(function (elem) {
37           elem.exten = (elem.exten === doc._previousDataValues.internal) ? doc.internal : doc.name;
38           elem.appdata = 'SIP/' + doc.name;
39           elem.save();
40         })
41       })
42       .catch(function (err) {
43         console.log(err);
44       });
45   }
46 }
47
48
49 function createExtension(doc) {
50   if (doc.internal) {
51     var userDials = [{
52       context: 'from-sip',
53       exten: doc.internal,
54       priority: 1,
55       app: 'Dial',
56       appdata: 'SIP/' + doc.name,
57       UserId: doc.id,
58       type: 'internal'
59     }, {
60       context: 'from-sip',
61       exten: doc.name,
62       priority: 1,
63       app: 'Dial',
64       appdata: 'SIP/' + doc.name,
65       UserId: doc.id,
66       type: 'internal'
67     }];
68
69     return VoiceExtension
70       .bulkCreate(userDials)
71       .catch(function (err) {
72         console.log(err);
73       });
74   }
75 }