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

// Возвращает массив с элементами - объектами (данными статей)
// Обычному юзеру выдем только его статьи, редактору - все неопубликованные
// arg  - это пустой объект, только для соблюдения синтаксиса
// user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
module.exports = async (arg, user) => {
   try {
      // Проверяем, не является ли он редактором
      let roles = 0;
      let staff = await dbFind("staff", {login: user[1]});
      if (staff[0]) roles = staff[0].roles;
      let isEditor =
          roles.toString(2).padStart(3, '0')[0] == "1" || user[1] == ADMIN;

      // Получаем все статьи этого юзера (+ те опубликованные, где он соавтор)
      let res = await dbFind("articles", {$where: function () {return(
         this.us == user[1] ||
         (this.status == 7 && (this.coauth[user[1]] ? true : false))
      )}});

      // Для редактора добавляем все неопубликованные статьи других юзеров
      let add = [];
      if (isEditor)
         add = await dbFind("articles", {$where: function () {
            return (this.status < 7 && this.us != user[1]);
         }});

      // Перед выдачей клиенту удаляем поле "рецензент"
      let resp = [...res, ...add];
      for (let art of resp) if (art.rev) {delete art.rev};

      return JSON.stringify(resp);
   }
   catch(e) {return "none";}
};
