Skip to content

Commit 5ce76a0

Browse files
unknownunknown
authored andcommitted
#5-08-2024
1 parent 00637c8 commit 5ce76a0

36 files changed

Lines changed: 2585 additions & 71 deletions

appsTeacher/globalVars/app.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,13 @@ module.exports = function init(site) {
268268
];
269269

270270
site.weekDays = [
271-
{ id: 1, index: 6, nameEn: "Saturday", nameAr: "السبت" },
272-
{ id: 2, index: 0, nameEn: "Sunday", nameAr: "الأحد" },
273-
{ id: 3, index: 1, nameEn: "Monday", nameAr: "الإثنين" },
274-
{ id: 4, index: 2, nameEn: "Tuesday", nameAr: "الثلاثاء" },
275-
{ id: 5, index: 3, nameEn: "Wednesday", nameAr: "الأربعاء" },
276-
{ id: 6, index: 4, nameEn: "Thursday", nameAr: "الخميس" },
277-
{ id: 7, index: 5, nameEn: "Friday", nameAr: "الجمعة" },
271+
{ id: 1, code: 6, nameEn: "Saturday", nameAr: "السبت" },
272+
{ id: 2, code: 0, nameEn: "Sunday", nameAr: "الأحد" },
273+
{ id: 3, code: 1, nameEn: "Monday", nameAr: "الإثنين" },
274+
{ id: 4, code: 2, nameEn: "Tuesday", nameAr: "الثلاثاء" },
275+
{ id: 5, code: 3, nameEn: "Wednesday", nameAr: "الأربعاء" },
276+
{ id: 6, code: 4, nameEn: "Thursday", nameAr: "الخميس" },
277+
{ id: 7, code: 5, nameEn: "Friday", nameAr: "الجمعة" },
278278
];
279279

280280
site.delayDiscountsTypes = [
@@ -570,7 +570,7 @@ module.exports = function init(site) {
570570
}
571571
if (setting.showParent) {
572572
site.notificationTypesList.push({
573-
nameAr: "الأباء",
573+
nameAr: "ولي الأمر",
574574
nameEn: "Parents",
575575
name: "parent",
576576
});

appsTeacher/groups/app.js

Lines changed: 77 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module.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();

appsTeacher/groups/site_files/html/_.html

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<div ng-controller="groups" class="loaded">
22
<div class="row" x-permissions="groupsUi || groupsManage">
33
<div x-import="groups/modal.html"></div>
4+
<div x-import="groups/studentsModal.html"></div>
45

56
<div class="top-actions">
67
<i-button type="add" x-permissions="groupsAdd || groupsManage" label="##word.New##"
@@ -14,16 +15,17 @@
1415
<div class="table-responsive">
1516
<table class="table hover bold" id="t1">
1617
<tr>
17-
<th class="w150">##word.Logo##</th>
1818
<th>##word.Name##</th>
19+
<th>##word.Teacher##</th>
20+
<th>##word.Subject##</th>
1921
<th>##word.Status##</th>
2022
<th class="not-print">##word.Actions##</th>
2123
</tr>
2224
<tr ng-repeat="item in list | filter:$search">
23-
<td>
24-
<i-image view class="logo center" ng-model="item.image"></i-image>
25-
</td>
25+
2626
<td class="center">{{item.name}}</td>
27+
<td class="center">{{item.teacher.firstName}}</td>
28+
<td class="center">{{item.subject.name}}</td>
2729
<td class="center">
2830
<span class="text-success" ng-show="item.active">##word.Active##</span>
2931
<span class="text-danger" ng-show="!item.active">##word.Not Active##</span>

appsTeacher/groups/site_files/html/modal.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div id="groupsManageModal" class="modal small" fixed>
1+
<div id="groupsManageModal" class="modal" fixed>
22
<div class="modal-content">
33
<div class="modal-header">
44
<span class="close">&times;</span>

appsTeacher/groups/site_files/html/modalContent.html

Lines changed: 58 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,66 @@
11
<div class="row">
22
<div class="row padding">
3-
<div class="col9">
4-
<div class="row">
5-
<div class="row">
6-
<i-checkbox ng-model="item.active" class="col3" label="##word.Active##"></i-checkbox>
7-
</div>
8-
<i-control type="text" v="r" ng-model="item.name" label="##word.Name##"></i-control>
9-
</div>
10-
<div class="row">
11-
<i-list v="r" class="col6" label="##word.Subject##" ng-model="item.subject" display="name" items="subjectsList" ng-get="getSubjectsList($search)"></i-list>
12-
<i-list
13-
class="col6"
14-
v="r"
15-
label="##word.Teacher##"
16-
ng-model="item.teacher"
17-
display="firstName"
18-
items="teachersList"
19-
ng-get="getTeachersList($search)"
20-
></i-list>
21-
</div>
3+
<div class="row">
4+
<i-control type="text" v="r" class="col6" ng-model="item.name" label="##word.Name##"></i-control>
5+
<i-button label="##word.Student Management##" type="push" class="col4" onclick="site.showModal( '#studentsModal')"></i-button>
6+
<i-checkbox ng-model="item.active" class="col2" label="##word.Active##"></i-checkbox>
7+
</div>
8+
<div class="row">
9+
<i-list v="r" class="col6" ng-change="getTeachersList()" label="##word.Subject##" ng-model="item.subject" display="name" items="subjectsList" ng-get="getSubjectsList($search)"></i-list>
10+
<i-list class="col6" v="r" label="##word.Teacher##" ng-model="item.teacher" display="firstName" items="teachersList" ng-get="getTeachersList($search)"></i-list>
2211
</div>
23-
<div class="col3 center">
24-
<i-image class="img128 center" ng-model="item.image"></i-image>
12+
<div class="row">
13+
<i-list
14+
label="##word.Educational Level##"
15+
ng-change="getSchoolYearsList(item.educationalLevel)"
16+
class="col6"
17+
v="r"
18+
ng-model="item.educationalLevel"
19+
display="name"
20+
items="educationalLevelsList"
21+
ng-search="item.$educationalLevel"
22+
></i-list>
23+
<i-list label="##word.School Year##" ng-model="item.schoolYear" class="col6" v="r" display="name" items="schoolYearsList"></i-list>
2524
</div>
2625
</div>
26+
27+
<fieldset>
28+
<legend>##word.Appointments##</legend>
29+
<div class="row">
30+
<i-date label="##word.Start Date##" v="r" class="col5" ng-model="item.startDate"> </i-date>
31+
<i-date label="##word.End Date##" v="r" class="col5" ng-model="item.endDate"> </i-date>
32+
</div>
33+
<div class="row">
34+
<i-checklist label="##word.Working Days##" v="r" class="col8" ng-model="item.days" items="weekDaysList" display="name##session.lang##"> </i-checklist>
35+
<i-button type="push" label="##word.Generate Appointments##" class="col3" ng-click="generateAppointments(item)"></i-button>
36+
</div>
37+
<div class="row" ng-show="item.dayList.length > 0">
38+
<div class="table-responsive">
39+
<table class="table hover bold" id="t2">
40+
<tr>
41+
<th>##word.Date##</th>
42+
<th>##word.Day##</th>
43+
<th>##word.Status##</th>
44+
<th class="not-print">##word.Actions##</th>
45+
</tr>
46+
<tr ng-repeat="d in item.dayList">
47+
<td class="center">
48+
<i-date ng-model="d.date" ng-click="changeDay(d)"> </i-date>
49+
</td>
50+
<td class="center">{{d.day.name##session.lang##}}</td>
51+
<td class="center">
52+
<span class="text-success" ng-show="d.active">##word.Booked##</span>
53+
<span class="text-danger" ng-show="!d.active">##word.Not Booked##</span>
54+
</td>
55+
56+
<td class="center not-print">
57+
<i-button type="delete" title="##word.Delete##" ng-click="item.dayList.splice($index,1)"></i-button>
58+
</td>
59+
</tr>
60+
</table>
61+
</div>
62+
</div>
63+
</fieldset>
2764
<fieldset>
2865
<h3>##word.Description## :</h3>
2966
<i-content ng-model="item.description" label="##word.Description##"> </i-content>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<div id="studentsModal" class="modal" fixed>
2+
<div class="modal-content">
3+
<div class="modal-header">
4+
<span class="close">&times;</span>
5+
<p class="center">
6+
##word.Students##
7+
<i class="fa fa-pencil"></i>
8+
</p>
9+
</div>
10+
11+
<div class="modal-body">
12+
<div class="row">
13+
<i-control type="text" class="col9" ng-model="item.$studentSearch" ng-keydown="getStudent($event,item.$studentSearch)" label="##word.Student Search##"></i-control>
14+
<i-button type="search" class="col3" label="##word.Search##" ng-click="getStudent({which : 13},item.$studentSearch)"></i-button>
15+
</div>
16+
<p class="error">{{error}}</p>
17+
<div class="row">
18+
<div class="table-responsive">
19+
<table class="table hover bold" id="t-students">
20+
<tr>
21+
<th>##word.Full Name##</th>
22+
<th>##word.Barcode##</th>
23+
<th>##word.Mobile##</th>
24+
<th>##word.Parent Mobile##</th>
25+
<th class="not-print">##word.Actions##</th>
26+
</tr>
27+
<tr ng-repeat="s in item.studentList | filter:$search">
28+
<td class="center">{{s.student.firstName}}</td>
29+
<td class="center userPrint">{{s.student.barcode}}</td>
30+
<td class="center">{{s.student.mobile}}</td>
31+
<td class="center">{{s.student.parentMobile}}</td>
32+
<td class="center not-print">
33+
<i-button type="delete" label="##word.Delete##" ng-click="item.studentList.splice($index,1)"></i-button>
34+
</td>
35+
</tr>
36+
</table>
37+
</div>
38+
</div>
39+
</div>
40+
41+
<div class="modal-footer center">
42+
43+
<i-button type="save" label="##word.Save##" onclick="site.hideModal( '#studentsModal')"></i-button>
44+
</div>
45+
</div>
46+
</div>

0 commit comments

Comments
 (0)