distrEdit.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /**
  2. * РЕДАКТИРОВАНИЕ ПЕДАГОГИЧЕСКОЙ НАГРУЗКИ
  3. * Copyright © 2019, А.М.Гольдин. Modified BSD License
  4. */
  5. "use strict";
  6. // В запросе приходит [func, teacher, subj, className]
  7. // (func это 'add' или 'del'); возвращает success или none
  8. // Нагрузка хранится в коллекции distrib в формате (одна запись - один учитель)
  9. // {
  10. // tLogin: "pupkin",
  11. // tLoad: {"s110": ["8Б", "10Ж"], "d830": ["8Б"]}
  12. // }
  13. module.exports = async argsObj => {
  14. try {
  15. let func = argsObj[0].trim(),
  16. teacher = argsObj[1].substr(0, 50).trim(),
  17. subj = argsObj[2].substr(0, 4).trim(),
  18. className = argsObj[3].substr(0, 20).trim();
  19. if (!func || !teacher || !subj || !className) return "none";
  20. // Получаем нагрузку данного учителя по данному предмету (если есть)
  21. let teacherObj = {}, classesArr = [];
  22. let teachObjArr = await dbFind("distrib", {tLogin: teacher});
  23. if (teachObjArr.length) {
  24. teacherObj = teachObjArr[0].tLoad;
  25. if (teacherObj[subj]) classesArr = teacherObj[subj];
  26. }
  27. // Добавление предмета и класса в нагрузку учителю
  28. if (func == "add") {
  29. if (classesArr.includes(className)) return "success";
  30. classesArr.push(className);
  31. teacherObj[subj] = classesArr;
  32. db["distrib"].update(
  33. {tLogin: teacher},
  34. {tLogin: teacher, tLoad: teacherObj},
  35. {upsert: true}
  36. );
  37. return "success";
  38. }
  39. // Удаление пары (предмет, класс) из нагрузки
  40. if (func == "del") {
  41. classesArr = classesArr.filter(c => c != className);
  42. if (classesArr.length) teacherObj[subj] = classesArr;
  43. else delete teacherObj[subj];
  44. if (!Object.keys(teacherObj).length)
  45. db["distrib"].remove({tLogin: teacher}, {});
  46. else
  47. db["distrib"].update(
  48. {tLogin: teacher}, {tLogin: teacher, tLoad: teacherObj}, {});
  49. return "success";
  50. }
  51. return "none";
  52. }
  53. catch(e) {return "none";}
  54. };