Built motion from commit 945d615.|1.0.13
[motion.git] / server / models / int_sugarcrm_configuration.js
1 'use strict';
2
3 module.exports = function(sequelize, DataTypes) {
4   return sequelize.define('SugarcrmConfiguration', {
5     name: DataTypes.STRING,
6     description: DataTypes.STRING,
7     defaultMapping: {
8       type: DataTypes.BOOLEAN,
9       defaultValue: true
10     },
11     mappingModule: DataTypes.STRING,
12     mappingFields: {
13       type: DataTypes.TEXT,
14       get: function() {
15         var mappingFields;
16         if (this.getDataValue('mappingFields')) {
17           mappingFields = this.getDataValue('mappingFields').split(';');
18           mappingFields.pop();
19         } else {
20           mappingFields = [];
21         }
22         return mappingFields;
23       },
24       set: function(val) {
25         this.setDataValue('mappingFields', val && val.length ? val.join(';') + ';' : null);
26       }
27     }
28   }, {
29     tableName: 'int_sugarcrm_configurations',
30     associate: function(models) {
31       models.SugarcrmConfiguration.belongsTo(models.SugarcrmAccount, {
32         foreignKey: 'AccountId'
33       });
34       models.SugarcrmConfiguration.hasMany(models.SugarcrmField, {
35         as: 'Subject',
36         foreignKey: 'SubjectId'
37       });
38       models.SugarcrmConfiguration.hasMany(models.SugarcrmField, {
39         as: 'Description',
40         foreignKey: 'DescriptionId'
41       });
42       models.SugarcrmConfiguration.hasMany(models.SugarcrmField, {
43         as: 'Field',
44         foreignKey: 'FieldId'
45       });
46       models.SugarcrmConfiguration.addScope('account', function(AccountId) {
47         return {
48           where: {
49             AccountId: AccountId
50           },
51           include: [{
52             all: true
53           }]
54         }
55       });
56     }
57   });
58 };