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

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

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

mongoose.set('debug', false);

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

const SiteSchema = new Schema({
  active: {
    type: Boolean,
  },
  idapp: {
    type: String,
  },
  name: {
    type: String,
  },
  adminemail: {
    type: String,
  },
  manageremail: {
    type: String,
  },
  replyTo: {
    type: String,
  },
  host: {
    type: String,
  },
  host_test: {
    type: String,
  },
  portapp: {
    type: String,
  },
  dir: {
    type: String,
  },
  dir_test: {
    type: String,
  },
  email_from: {
    type: String,
  },
  email_pwd: {
    type: String,
  },
  telegram_key: {
    type: String,
  },
  telegram_bot_name: {
    type: String,
  },
  telegram_key_test: {
    type: String,
  },
  telegram_bot_name_test: {
    type: String,
  },
  telegram_support_chat: {
    type: String,
  },
  pathreg_add: {
    type: String,
  },
  who: {
    type: String
  },
  status: {
    type: String
  },
  note: {
    type: String
  },
  domain_provider: {
    type: String,
  },
  domain_expiring: {
    type: Date
  },
  next_payment: {
    type: Date
  },
  confsite: {
    options: {  // ConfSite
      type: Number,
      default: 0,
    },
  }
});

var Site = module.exports = mongoose.model('Site', SiteSchema);

module.exports.getFieldsForSearch = function () {
  return []
};

module.exports.executeQueryTable = async function (idapp, params, userreq) {
  params.fieldsearch = this.getFieldsForSearch();
  // return tools.executeQueryTable(this, null, params);

  const { User } = require('../models/user');

  // Solo l'Admin puó leggerlo

  const extrapar = params.extrapar;

  if (extrapar) {
    return await Site.findOne({idapp: extrapar}, {name: 1, manageremail: 1, confsite: 1}).lean();
  }

  if (User.isAdmin(userreq.perm)) {
    const myarr = await Site.find({});

    return ({ count: myarr.length, rows: myarr })

  }


};

module.exports.findAllIdApp = async function (idapp) {

  const myfind = { active: true };

  return Site.find(myfind).lean();

};
