This commit is contained in:
2023-10-16 12:23:31 +05:00
parent 826ac1f621
commit 4c83933741
8 changed files with 435 additions and 95 deletions
+1 -2
View File
@@ -4,8 +4,7 @@ import Company from "../models/Company.js";
const appRouter = Router();
appRouter.post("/", async (_req, res) => {
const companies = await Company.find();
console.log(companies);
await Company.find();
res.json({ route: "app" });
});
+99
View File
@@ -1,6 +1,7 @@
import { Router } from "express";
import Company from "../models/Company.js";
import { parseISO, startOfDay, endOfDay } from "date-fns";
import ScheduledSession from "../models/ScheduledSession.js";
const companiesRouter = Router();
@@ -82,4 +83,102 @@ companiesRouter.get(
}
);
companiesRouter.put(
"/:id/scheduled_sessions/:scheduledSessionId",
async (req, res) => {
if (req.params.id != res.locals.user.companyId) {
res.json({ error: "Access denied!" });
return;
}
try {
const scheduledSession = await ScheduledSession.findById(
req.params.scheduledSessionId
);
const scheduledSessionAtSameTime = await ScheduledSession.find({
startAt: scheduledSession?.startAt,
userId: req.body.userId,
});
if (scheduledSessionAtSameTime.length) {
res.json({ error: "Scheduled session at same time" });
return;
}
const updatedScheduledSession = await ScheduledSession.findOneAndUpdate(
{
_id: req.params.scheduledSessionId,
companyId: req.params.id,
},
req.body,
{
new: true,
upsert: true,
}
);
res.json(updatedScheduledSession);
} catch (error) {
if (error instanceof Error) {
res.json({ error });
}
}
}
);
companiesRouter.get(
"/:id/builds/:buildId/scheduled_sessions/:scheduledSessionId/availableManagers",
async (req, res) => {
if (!req.query.startAt) {
res.json({ error: "No dateTime" });
return;
}
try {
const scheduledSession = await ScheduledSession.findById(
req.params.scheduledSessionId
);
const scheduledSessionsAtSameTime = await ScheduledSession.find({
companyId: req.params.id,
buildId: req.params.buildId,
startAt: req.query.startAt,
});
const { users }: any = await Company.findById(req.params.id).populate(
"users"
);
let userIds = users.map((user: any) => user.id);
console.log(scheduledSession?.userId);
for (const userId of userIds) {
console.log(userId);
}
let sessionsUserIds: any[] = [];
for (const session of scheduledSessionsAtSameTime) {
if (session.userId) {
sessionsUserIds.push(session.userId.toString());
}
}
const filteredUserIds = userIds.filter(
(userId: any) => !sessionsUserIds.includes(userId)
);
filteredUserIds.push(scheduledSession?.userId);
res.json(filteredUserIds);
} catch (error) {
if (error instanceof Error) {
res.json({ error });
}
}
}
);
export default companiesRouter;