const mongoose = require('mongoose'); const Schema = mongoose.Schema; mongoose.Promise = global.Promise; mongoose.level = "F"; const tools = require('../tools/general'); const { ObjectID } = require('mongodb'); // Resolving error Unknown modifier: $pushAll mongoose.plugin(schema => { schema.options.usePushEach = true }); const DisciplineSchema = new Schema({ idapp: { type: String, }, order: { type: Number, }, typol_code: { type: String, }, label: { type: String, }, description: { type: String, }, linkpage: { type: String, }, color: { type: String, }, icon: { type: String, }, img_small: { type: String, }, img: { type: String, }, showinnewsletter: { type: Boolean, }, showinhome: { type: Boolean, }, teachers: [{ type: String, }], }); DisciplineSchema.statics.findAllIdApp = function (idapp) { const Discipline = this; const query = [ { $match: { idapp } }, { $sort: { order: 1 } } ]; return Discipline .aggregate(query) .then((arrrec) => { return arrrec }) }; DisciplineSchema.statics.getDisciplineforNewsletter = function (idapp) { const Discipline = this; const query = [ { $match: { $and: [{ idapp }, { showinnewsletter: true }] } }, { $sort: { order: 1 } } ]; return Discipline .aggregate(query) .then((arrrec) => { return arrrec }) }; DisciplineSchema.statics.getFieldsForSearch = function () { return [{ field: 'label', type: tools.FieldType.string }, { field: 'description', type: tools.FieldType.string }] }; DisciplineSchema.statics.executeQueryTable = function (idapp, params) { params.fieldsearch = this.getFieldsForSearch(); return tools.executeQueryTable(this, idapp, params); }; DisciplineSchema.statics.DuplicateAllRecords = async function (idapporig, idappdest) { return tools.DuplicateAllRecords(this, idapporig, idappdest); }; const Discipline = mongoose.model('Discipline', DisciplineSchema); module.exports = { Discipline };