This commit is contained in:
2023-10-18 18:16:29 +05:00
parent c5aa7bd524
commit 45e5b95dd9
6 changed files with 299 additions and 62 deletions
+53
View File
@@ -0,0 +1,53 @@
import { model, Schema } from "mongoose";
const scheduleSchema = new Schema(
{
companyId: {
type: Schema.Types.ObjectId,
ref: "Company",
required: true,
},
buildId: {
type: Schema.Types.ObjectId,
ref: "Build",
required: true,
},
startDate: {
type: Date,
required: true,
},
endDate: {
type: Date,
required: true,
},
startTime: {
type: String,
required: true,
},
endTime: {
type: String,
required: true,
},
sessionDuration: {
type: Number,
required: true,
},
sessionBreak: {
type: Number,
required: true,
},
sessionCount: {
type: Number,
required: true,
},
},
{
timestamps: true,
toJSON: { virtuals: true },
toObject: { virtuals: true },
}
);
const Schedule = model("Schedule", scheduleSchema);
export default Schedule;
+30
View File
@@ -2,6 +2,7 @@ import { Router } from "express";
import Company from "../models/Company.js";
import { parseISO, startOfDay, endOfDay } from "date-fns";
import ScheduledSession from "../models/ScheduledSession.js";
import Schedule from "../models/Schedule.js";
const companiesRouter = Router();
@@ -201,4 +202,33 @@ companiesRouter.get(
}
);
companiesRouter.get("/:id/builds/:buildId/schedules", async (req, res) => {
if (req.params.id != res.locals.user.companyId) {
res.json({ error: "Access denied!" });
return;
}
const schedules = await Schedule.find({
companyId: req.params.id,
buildId: req.params.buildId,
});
res.json(schedules);
});
companiesRouter.post("/:id/builds/:buildId/schedules", async (req, res) => {
if (req.params.id != res.locals.user.companyId) {
res.json({ error: "Access denied!" });
return;
}
const schedule = await Schedule.create({
companyId: req.params.id,
buildId: req.params.buildId,
...req.body,
});
res.json(schedule);
});
export default companiesRouter;