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

// Возвращает массив "success" либо "none"
// user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
module.exports = async (id, user) => {
   try {
      // Правда ли он корректор?
      let roles = "000";
      let staff = await dbFind("staff", {login: user[1]});
      if (staff[0]) roles = staff[0].roles.toString(2).padStart(3, '0');
      if (user[1] == ADMIN) roles   = "111";
      if (!roles[1]) return "none";

      // Есть ли такая статья и не опубликована ли она уже?
      let res = await dbFind("articles", {_id: id});
      if (!res.length)        return "none";
      if (res[0].status == 7) return "none";
      let title = res[0].head,
         author = res[0].author,
            eml = res[0].eml;

      // Обновляем статус
      let now = (new Date()).toISOString().split('T')[0]
              . replace(/(\d+)-(\d+)-(\d+)/, "$3.$2.$1");
      await db.articles.update(
         {_id: id}, {$set: {status: 6, dt2: now}}, {}
      );

      // Посылаем письмо автору
      await sendEml(eml, `Статья прошла корректуру`,
           `Уважаемый(ая) ${author}!\n\n`
         + `Ваша статья «${title}» прошла корректуру и готовится к `
         + `публикации. О публикации статьи вы будете проинформированы `
         + `по электронной почте.`
      );

      return "success";      
   }
   catch(e) {return "none";}
};
