Org = new Mongo . Collection ( 'org' ) ;
/ * *
* A Organization in Wekan . A Enterprise in Trello .
* /
Org . attachSchema (
new SimpleSchema ( {
_id : {
/ * *
* the organization id
* /
type : Number ,
optional : true ,
// eslint-disable-next-line consistent-return
autoValue ( ) {
if ( this . isInsert && ! this . isSet ) {
return incrementCounter ( 'counters' , 'orgId' , 1 ) ;
}
} ,
} ,
displayName : {
/ * *
* the name to display for the organization
* /
type : String ,
optional : true ,
} ,
desc : {
/ * *
* the description the organization
* /
type : String ,
optional : true ,
max : 190 ,
} ,
name : {
/ * *
* short name of the organization
* /
type : String ,
optional : true ,
max : 255 ,
} ,
website : {
/ * *
* website of the organization
* /
type : String ,
optional : true ,
max : 255 ,
} ,
teams : {
/ * *
* List of teams of a organization
* /
type : [ Object ] ,
// eslint-disable-next-line consistent-return
autoValue ( ) {
if ( this . isInsert && ! this . isSet ) {
return [
{
teamId : this . teamId ,
isAdmin : true ,
isActive : true ,
isNoComments : false ,
isCommentOnly : false ,
isWorker : false ,
} ,
] ;
}
} ,
} ,
'teams.$.teamId' : {
/ * *
* The uniq ID of the team
* /
type : String ,
} ,
'teams.$.isAdmin' : {
/ * *
* Is the team an admin of the board ?
* /
type : Boolean ,
} ,
'teams.$.isActive' : {
/ * *
* Is the team active ?
* /
type : Boolean ,
} ,
'teams.$.isNoComments' : {
/ * *
* Is the team not allowed to make comments
* /
type : Boolean ,
optional : true ,
} ,
'teams.$.isCommentOnly' : {
/ * *
* Is the team only allowed to comment on the board
* /
type : Boolean ,
optional : true ,
} ,
'teams.$.isWorker' : {
/ * *
* Is the team only allowed to move card , assign himself to card and comment
* /
type : Boolean ,
optional : true ,
} ,
createdAt : {
/ * *
* creation date of the organization
* /
type : Date ,
// eslint-disable-next-line consistent-return
autoValue ( ) {
if ( this . isInsert ) {
return new Date ( ) ;
} else if ( this . isUpsert ) {
return { $setOnInsert : new Date ( ) } ;
} else {
this . unset ( ) ;
}
} ,
} ,
modifiedAt : {
type : Date ,
denyUpdate : false ,
// eslint-disable-next-line consistent-return
autoValue ( ) {
if ( this . isInsert || this . isUpsert || this . isUpdate ) {
return new Date ( ) ;
} else {
this . unset ( ) ;
}
} ,
} ,
} ) ,
) ;
if ( Meteor . isServer ) {
// Index for Organization name.
Meteor . startup ( ( ) => {
Org . _collection . _ensureIndex ( { name : - 1 } ) ;
} ) ;
}
export default Org ;