/**
 *   ПОЛУЧЕНИЕ СПИСКА РЕДАКТОРОВ, КОРРЕКТОРОВ И РЕЦЕНЗЕНТОВ
 *   Copyright © 2021, А.М.Гольдин. ISC license
 */
"use strict";

// Если объект аргументов пустой,
// возвращает несортированный массив сотрудников вида
// [["pupkin", "Пупкин Иван Иванович", 6], ["ejov", "Ежов Петр Петрович", 1]]`
// Последнее число - это двоичный код ролей (Editor, Corrector, Reviewer)
//
// Если передан объект {oper: "add", login:..., fio:..., eml:..., roles:...},
// добавляет сотрудника
//
// Если передан объект {oper: "del", login: ...}, удаляет сотрудника
//
// arg  - это переданный модулю объект с аргументами
// user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
module.exports = async (arg, user) => {
   try {
      // Проверяем полномочия клиента (модуль доступен только гл. редактору)
      if (user[0] !== 8) return "none";

      // Смотрим на запрашиваемую функцию
      if (!Object.keys(arg).length) {
         let staffList = [];
         let res = await dbFind("staff", {});      
         for (let staff of res) staffList.push(
            [staff.login, staff.fio, staff.eml, staff.roles] 
         );
         return JSON.stringify(staffList);
      }
      else if (arg.oper == "add") {
         db.staff.insert({
            login:arg.login, fio:arg.fio, eml:arg.eml, roles:arg.roles
         });
         return "success";
      }
      else if (arg.oper == "del") {
         db.staff.remove({login:arg.login}, {});
         return "success";
      }
      else return "none";
   }
   catch(e) {return "none";}
};
