dvc890 commited on
Commit
3fb8bc3
·
verified ·
1 Parent(s): 9c7e2d6

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +20 -7
server.js CHANGED
@@ -141,16 +141,29 @@ app.get('/api/schedules', async (req, res) => {
141
  });
142
 
143
  app.post('/api/schedules', async (req, res) => {
144
- const filter = { className:req.body.className, dayOfWeek:req.body.dayOfWeek, period:req.body.period, weekType: req.body.weekType || 'ALL' };
145
- const sId = req.headers['x-school-id'];
146
- if(sId) filter.schoolId = sId;
147
- await ScheduleModel.findOneAndUpdate(filter, injectSchoolId(req, req.body), {upsert:true});
148
- res.json({});
 
 
 
 
 
 
 
 
 
149
  });
150
 
151
  app.delete('/api/schedules', async (req, res) => {
152
- await ScheduleModel.deleteOne({...getQueryFilter(req), ...req.query});
153
- res.json({});
 
 
 
 
154
  });
155
 
156
  // --- USER MENU ORDER ---
 
141
  });
142
 
143
  app.post('/api/schedules', async (req, res) => {
144
+ try {
145
+ // FIX: Removed weekType from filter to prevent Duplicate Key Error on existing unique index.
146
+ // The DB index is (schoolId, className, dayOfWeek, period).
147
+ // This means we can only have one schedule per slot. Updating weekType should update the existing slot.
148
+ const filter = { className:req.body.className, dayOfWeek:req.body.dayOfWeek, period:req.body.period };
149
+ const sId = req.headers['x-school-id'];
150
+ if(sId) filter.schoolId = sId;
151
+
152
+ await ScheduleModel.findOneAndUpdate(filter, injectSchoolId(req, req.body), {upsert:true});
153
+ res.json({});
154
+ } catch (e) {
155
+ console.error("Save schedule error:", e);
156
+ res.status(500).json({ error: e.message });
157
+ }
158
  });
159
 
160
  app.delete('/api/schedules', async (req, res) => {
161
+ try {
162
+ await ScheduleModel.deleteOne({...getQueryFilter(req), ...req.query});
163
+ res.json({});
164
+ } catch (e) {
165
+ res.status(500).json({ error: e.message });
166
+ }
167
  });
168
 
169
  // --- USER MENU ORDER ---