6e82dc4447948eba3091e4151298020ca90b1a72
[motion.git] / server / models / team.js
1 /**
2  * User Model
3  */
4
5 var crypto = require('crypto');
6
7 module.exports = function(sequelize, DataTypes) {
8
9   var Team = sequelize.define('Team', {
10     name: {
11       type: DataTypes.STRING,
12       allowNull: false,
13       unique: 'name'
14     },
15     description: {
16       type: DataTypes.STRING
17     },
18     defaultEntry: {
19       type: DataTypes.BOOLEAN,
20       defaultValue: 0
21     }
22   }, {
23     tableName: 'teams',
24     associate: function(models) {
25       Team.belongsToMany(models.User, {
26         through: models.UserHasTeam
27       });
28       Team.addScope('agents', function(id) {
29         var where = {
30           role: 'agent',
31         };
32
33         if (id) {
34           where.id = {
35             $in: id
36           }
37         }
38
39         return {
40           include: [{
41             model: models.User,
42             where: where,
43             required: false,
44             attributes: ['id', 'name', 'fullname', 'email', 'internal']
45           }]
46         }
47       });
48       Team.addScope('default', {
49         attributes: ['id', 'name', 'description', 'defaultEntry']
50       });
51     }
52   });
53
54   return Team;
55 };