const mongoose = require('mongoose').set('debug', false);
const Schema = mongoose.Schema;

const tools = require('../tools/general');

mongoose.Promise = global.Promise;
mongoose.level = 'F';

// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
  schema.options.usePushEach = true;
});

const BotSchema = new Schema({
  idapp: {
    type: String,
  },
  page: {
    type: Number,
  },
  index: {
    type: Number,
  },
  riga: {
    type: Number,
  },
  active: {
    type: Boolean,
  },
  lang: {
    type: String,
  },
  main: {
    type: Boolean,
  },
  label: {
    type: String,
  },
  type: {
    type: Number,
  },
  value: {
    type: String,
  },
  visibility: {
    type: Number,  // VISIB_ALL, VISIB_ONLYIF_LOGGED, VISIB_ONLY_ADMIN
  },
  date_updated: {
    type: Date,
  },
});

BotSchema.statics.getFieldsForSearch = function() {
  return [{ field: 'label', type: tools.FieldType.string }]
};

BotSchema.statics.executeQueryTable = function(idapp, params) {
  params.fieldsearch = this.getFieldsForSearch();
  return tools.executeQueryTable(this, idapp, params);
};

BotSchema.statics.DuplicateAllRecords = async function (idapporig, idappdest) {

  return await tools.DuplicateAllRecords(this, idapporig, idappdest);

};


BotSchema.statics.findAllIdApp = async function(idapp) {
  const Bot = this;

  const myfind = {idapp};

  return await Bot.find(myfind).sort({page: 1, lang: 1, riga: 1, index: 1}).lean();
};

const MyBot = mongoose.model('Bot', BotSchema);

module.exports = {MyBot};
