interGroupPup.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * РАБОТА СО СПИСКОМ УЧАЩИХСЯ МЕЖКЛАССНОЙ ГРУППЫ (ДОБАВЛЕНИЕ, УДАЛЕНИЕ)
  3. * Copyright © 2020, А.М.Гольдин. Modified BSD License
  4. */
  5. "use strict";
  6. // Аргументы: ["func", grName, pupLgn, teachLgn]
  7. // "func" - может быть "add" или "del"
  8. // grName - имя группы типа 23Б
  9. // pupLgn - логин добавляемого/удаляемого учащегося
  10. // teachLgn - логин учителя, запрашивающего операцию (с фронтенда
  11. // не передается, подписывается скриптом index.js)
  12. // Возвращает "success" либо "none"
  13. module.exports = async args => {
  14. try {
  15. if (args.length != 4) return "none";
  16. let func = args[0].substr(0, 3),
  17. grName = args[1].substr(0, 3),
  18. pupLgn = args[2].substr(0, 20),
  19. teachLgn = args[3].substr(0, 20);
  20. if (!func || !grName || !pupLgn || !teachLgn) return "none";
  21. // Проверяем, есть ли такая группа
  22. let gRes = await dbFind("curric", {type: "intergroup", ingrName: grName});
  23. if (!gRes.length) return "none";
  24. // Получаем список межклассных групп данного ученика
  25. let pRes = await dbFind("pupils", {Ulogin: pupLgn});
  26. if (!pRes.length) return "none";
  27. let facList = [];
  28. if (pRes[0].facult) facList = pRes[0].facult;
  29. // Если запрос на удаление - удаляем, иначе добавляем
  30. if (func == "del") {
  31. let pos = facList.indexOf(grName);
  32. if (pos > -1) facList.splice(pos, 1);
  33. }
  34. else if (!facList.includes(grName)) facList.push(grName);
  35. // Обновляем запись в таблице учащихся
  36. let success = true;
  37. await db.pupils.update(
  38. {Ulogin: pupLgn}, {$set: {facult: facList}}, {},
  39. function (e) {if(e) success = false;}
  40. );
  41. return success ? "success" : "none";
  42. } catch(e) {return "none";}
  43. };