module.exports = Self => { Self.validate('range', function(err) { if (this.type == 'range' && !this.started && !this.ended) err(); }, { message: `You should specify at least a start or end date` }); Self.validate('validRange', function(err) { if (this.type == 'range' && this.started && this.ended && this.started >= this.ended) err(); }, { message: `Start date should be lower than end date` }); Self.validate('dated', function(err) { if (this.type == 'day' && !this.dated) err(); }, { message: `You should specify a date` }); Self.validate('weekDays', function(err) { if (['range', 'indefinitely'].indexOf(this.type) !== -1 && !this.weekDays) err(); }, { message: `You should mark at least one week day` }); };