11module.exports = function init(site) {
22 let app = {
33 name: "groups",
4- allowMemory: true ,
4+ allowMemory: false ,
55 memoryList: [],
66 allowCache: false,
77 cacheList: [],
@@ -236,7 +236,7 @@ module.exports = function init(site) {
236236 }
237237
238238 if (app.allowRouteView) {
239- site.post({ name: `/api/${app.name}/view`, public: true }, (req, res) => {
239+ site.post({ name: `/api/${app.name}/view`, require: { permissions: ["login"] } }, (req, res) => {
240240 let response = {
241241 done: false,
242242 };
@@ -255,32 +255,87 @@ module.exports = function init(site) {
255255 }
256256
257257 if (app.allowRouteAll) {
258- site.post({ name: `/api/${app.name}/all`, public: true }, (req, res) => {
258+ site.post({ name: `/api/${app.name}/all`, require: { permissions: ["login"] } }, (req, res) => {
259+ let setting = site.getSiteSetting(req.host);
259260 let where = req.body.where || {};
260- let select = req.body.select || { id: 1, name: 1, image: 1, active: 1 };
261- let list = [];
262- let teacherId = site.getTeacherSetting(req);
263- let host = site.getHostFilter(req.host);
264- let setting = site.getSiteSetting(req.host);
261+ let search = req.body.search || "";
262+ let limit = req.body.limit || 50;
263+ let select = req.body.select || {
264+ id: 1,
265+ name: 1,
266+ teacher: 1,
267+ subject: 1,
268+ active: 1,
269+ };
270+ if (search) {
271+ where.$or = [];
265272
266- app.memoryList.forEach((doc) => {
267- let obj = { ...doc };
268- if ((!where.active || doc.active) && ((doc.teacherId === teacherId && !setting.isShared) || (doc.host == host && setting.isShared))) {
269- list.push(obj);
270- }
273+ where.$or.push({
274+ id: site.get_RegExp(search, "i"),
275+ });
276+ where.$or.push({
277+ name: site.get_RegExp(search, "i"),
278+ });
279+ where.$or.push({
280+ description: site.get_RegExp(search, "i"),
281+ });
282+ where.$or.push({
283+ "educationalLevel.name": site.get_RegExp(search, "i"),
284+ });
285+ where.$or.push({
286+ "schoolYear.name": site.get_RegExp(search, "i"),
287+ });
288+ where.$or.push({
289+ "subject.name": site.get_RegExp(search, "i"),
290+ });
291+ where.$or.push({
292+ "teacher.firstName": site.get_RegExp(search, "i"),
293+ });
294+ }
271295
272- for (const p in obj) {
273- if (!Object.hasOwnProperty.call(select, p)) {
274- delete obj[p];
275- }
276- }
277- });
278- res.json({
279- done: true,
280- list: list,
296+ if ((teacherId = site.getTeacherSetting(req)) && !setting.isCenter) {
297+ where["teacherId"] = teacherId;
298+ } else {
299+ where["host"] = site.getHostFilter(req.host);
300+ }
301+ app.all({ where, select, limit, sort: { id: -1 } }, (err, docs) => {
302+ res.json({
303+ done: true,
304+ list: docs,
305+ });
281306 });
282307 });
283308 }
309+
310+ site.post({ name: `/api/${app.name}/handleToPreparingGroup`, require: { permissions: ["login"] } }, (req, res) => {
311+ let response = {
312+ done: false,
313+ };
314+
315+ let _data = req.data;
316+ app.view(_data, (err, doc) => {
317+ if (!err && doc) {
318+ response.done = true;
319+ let date = new Date();
320+ let result = {};
321+ let index = doc.dayList.findIndex(
322+ (itm) => new Date(itm.date).getDate() === date.getDate() && new Date(itm.date).getMonth() === date.getMonth() && new Date(itm.date).getFullYear() === date.getFullYear() && !itm.active
323+ );
324+ if (index !== -1) {
325+ result.validDay = doc.dayList[index];
326+ } else {
327+ res.json(response);
328+ return;
329+ }
330+ result.studentList = doc.studentList;
331+ response.doc = result;
332+ res.json(response);
333+ } else {
334+ response.error = err?.message || "Not Exists";
335+ res.json(response);
336+ }
337+ });
338+ });
284339 }
285340
286341 app.init();
0 commit comments