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`
    });
};