1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /**
- * НАЗНАЧЕНИЕ СТАТЬЕ РЕЦЕНЗЕНТА ИЛИ КОРРЕКТОРА
- * Copyright © 2021, А.М.Гольдин. ISC license
- */
- "use strict";
- // Возвращает success или none
- // data - это массив вида ["rev", id, login], где
- // "rev" - рецензент, "corr" - корректор
- // id - id статьи
- // login - логин назначаемого рецензента или корректора (или ADMIN)
- // user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
- module.exports = async (data, user) => {
- const id = data[1] ? data[1] : '',
- login = data[2] ? data[2] : '';
- if (!id || !login) return "none";
- 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[0]) 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,
- authEml = res[0].eml;
- // Определяем фио и почту рецензента или корректора
- let fio = '', eml = '';
- if (login != "ADMIN") {
- let staff = await dbFind("staff", {login: login});
- if (!staff.length) return "none";
- fio = staff[0].fio.split(' ').slice(1).join(' ');
- eml = staff[0].eml;
- }
- // Пишем рецензента или корректора, новые статус и время в базу статей
- let who = "корректор", whoBrief = "КОРР";
- let now = (new Date()).toISOString().split('T')[0]
- . replace(/(\d+)-(\d+)-(\d+)/, "$3.$2.$1");
- if (data[0] == "rev") {
- who = "рецензент";
- whoBrief = "РЕЦ";
- await db.articles.update(
- {_id: id}, {$set: {rev: login, status: 3, dt2: now}}, {}
- );
- }
- else {
- await db.articles.update(
- {_id: id}, {$set: {corr: login, status: 5, dt2: now}}, {}
- );
- }
- // Посылаем письмо автору
- await sendEml(authEml, `Статья направлена ${who}у`,
- `Уважаемый(ая) ${author}!\n\n`
- + `Ваша статья «${title}» направлена ${who}у. О результатах его `
- + `работы со статьей вы будете проинформированы по электронной почте.`
- );
- // Посылаем письмо рецензенту или корректору
- if (!eml) return "success";
- await sendEml(eml, "Новая статья",
- `Уважаемый(ая) ${fio}!\n\nВам (как ${who}у) направлена статья `
- + `${id.toUpperCase()} «${title}». Для работы со статьей `
- + `авторизуйтесь на сайте и зайдите в раздел «${whoBrief}».`
- );
- return "success";
- }
- catch(e) {return "none";}
- };
|