corrEnd.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * ИЗМЕНЕНИЕ СТАТУСА СТАТЬИ, ПРОШЕДШЕЙ КОРРЕКТУРУ
  3. * Copyright © 2021, А.М.Гольдин. ISC license
  4. */
  5. "use strict";
  6. // Возвращает массив "success" либо "none"
  7. // user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
  8. module.exports = async (id, user) => {
  9. try {
  10. // Правда ли он корректор?
  11. let roles = "000";
  12. let staff = await dbFind("staff", {login: user[1]});
  13. if (staff[0]) roles = staff[0].roles.toString(2).padStart(3, '0');
  14. if (user[1] == ADMIN) roles = "111";
  15. if (!roles[1]) return "none";
  16. // Есть ли такая статья и не опубликована ли она уже?
  17. let res = await dbFind("articles", {_id: id});
  18. if (!res.length) return "none";
  19. if (res[0].status == 7) return "none";
  20. let title = res[0].head,
  21. author = res[0].author,
  22. eml = res[0].eml;
  23. // Обновляем статус
  24. let now = (new Date()).toISOString().split('T')[0]
  25. . replace(/(\d+)-(\d+)-(\d+)/, "$3.$2.$1");
  26. await db.articles.update(
  27. {_id: id}, {$set: {status: 6, dt2: now}}, {}
  28. );
  29. // Посылаем письмо автору
  30. await sendEml(eml, `Статья прошла корректуру`,
  31. `Уважаемый(ая) ${author}!\n\n`
  32. + `Ваша статья «${title}» прошла корректуру и готовится к `
  33. + `публикации. О публикации статьи вы будете проинформированы `
  34. + `по электронной почте.`
  35. );
  36. return "success";
  37. }
  38. catch(e) {return "none";}
  39. };