78 lines
2.6 KiB
JavaScript
78 lines
2.6 KiB
JavaScript
|
"use strict";
|
|||
|
|
|||
|
const tool = require("../tools/main");
|
|||
|
|
|||
|
const config = require("../config/main.js");
|
|||
|
const txt = require("../lang/"+config.adminLang+"/subscription");
|
|||
|
const txtGeneral = require("../lang/"+config.adminLang+"/general");
|
|||
|
|
|||
|
module.exports = (sequelize, DataTypes) =>
|
|||
|
{
|
|||
|
const Subscription = sequelize.define("Subscription",
|
|||
|
{
|
|||
|
numberOfDays:
|
|||
|
{
|
|||
|
type: DataTypes.INTEGER(6).UNSIGNED, allowNull: false, defaultValue: 0,
|
|||
|
comment: "The duration in number of days of the subscription",
|
|||
|
validate:
|
|||
|
{
|
|||
|
notNull: { msg: txt.needNumberOfDays },
|
|||
|
isInt : { msg: txt.needIntegerNumberOfDays },
|
|||
|
min :
|
|||
|
{
|
|||
|
args: [0],
|
|||
|
msg: txt.needMinNumberOfDays
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
receiptDays:
|
|||
|
{
|
|||
|
type: DataTypes.STRING(7), defaultValue: "1234567",
|
|||
|
comment: "Days on which the user has chosen to receive new questionnaires. The same numbers as in Mysql's DAYOFWEEK function.",
|
|||
|
set(value) { this.setDataValue("receiptDays", tool.trimIfNotNull(value)); },
|
|||
|
validate:
|
|||
|
{
|
|||
|
len:
|
|||
|
{
|
|||
|
args: [1,7],
|
|||
|
msg: txt.needNotTooLongDaysList
|
|||
|
},
|
|||
|
validDays(value)
|
|||
|
{
|
|||
|
let daysNumber="1234567";
|
|||
|
let cars=value.split(""), carsOk="";
|
|||
|
for (let car of cars)
|
|||
|
{
|
|||
|
if(daysNumber.indexOf(car)===-1)
|
|||
|
throw new Error(txt.needValidDaysList+car);
|
|||
|
else if(carsOk.indexOf(car)!==-1)
|
|||
|
throw new Error(txt.needUniqueDaysList+car);
|
|||
|
carsOk+=car;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
noticeOk:
|
|||
|
{
|
|||
|
type: DataTypes.BOOLEAN(1), allowNull: false, defaultValue: false,
|
|||
|
validate:
|
|||
|
{
|
|||
|
notNull: { msg: txt.needKnowIfNoticeOk },
|
|||
|
isIn:
|
|||
|
{
|
|||
|
args: [[true, false]],
|
|||
|
msg: txt.needKnowIfNoticeOk+" "+txtGeneral.notValidFormat
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
},
|
|||
|
{
|
|||
|
}
|
|||
|
);
|
|||
|
Subscription.associate = function(models)
|
|||
|
{
|
|||
|
Subscription.belongsTo(models.User, { foreignKey: { name: "UserId", allowNull: false, unique: true }, onDelete: 'CASCADE', onUpdate: 'CASCADE' }),
|
|||
|
Subscription.hasMany(models.Pause)
|
|||
|
};
|
|||
|
return Subscription;
|
|||
|
};
|