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

// Возвращает объект - данные статьи (либо пустой объект)
//  id  - это id запрашиваемой статьи
// user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
module.exports = async (id, user) => {
   try {
      // Промисификатор чтения файла
      const rFile = fl => {
         return new Promise((resolve, reject) => {
            fs.readFile(fl, (e, cnt) => {
               if (e) reject("none"); else resolve(cnt.toString());
            })
         })
      };

      // Проверяем, является ли он редактором
      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;
      if (!isEditor) return "{}";

      // Получаем статью
      let res = await dbFind("articles", {_id: id});
      if (!res.length) return "{}";

      // Получаем тексты замечаний редактора и рецензента
      let edNotes, revNotes;
      try {
         edNotes  = await rFile( __dirname + `/../draft/${id}/editor.txt`);
      } catch(e) {edNotes = "нет";}
      try {
         revNotes  = await rFile( __dirname + `/../draft/${id}/reviewer.txt`);
      } catch(e) {revNotes = "нет";}

      // Пишем соответствующие поля в объект со статьей
      res[0].ednotes  = edNotes.replace(/\r/g, '') .replace(/\n/g, "<br>");
      res[0].revnotes = revNotes.replace(/\r/g, '').replace(/\n/g, "<br>");

      return JSON.stringify(res[0]);
   }
   catch(e) {console.info(e); return "none";}
};
