Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
d7a7809
minor change: log
venkylm10 Apr 23, 2025
fd8d9fd
Merge pull request #16 from swciitg/admin-panel
kvineet002 Aug 21, 2025
8056774
Merge pull request #17 from swciitg/admin-panel
kvineet002 Aug 23, 2025
8d96e72
Merge pull request #18 from swciitg/admin-panel
dishantttt Aug 23, 2025
807aa87
Merge pull request #19 from swciitg/admin-panel
kvineet002 Aug 24, 2025
b85ceda
Merge pull request #20 from swciitg/dev
kvineet002 Aug 24, 2025
b9f0af1
Merge pull request #21 from swciitg/admin-panel
laladwesh Aug 25, 2025
f1de5b0
Merge pull request #22 from swciitg/dev
dishantttt Aug 25, 2025
34a05d0
Merge pull request #24 from swciitg/admin-panel
dishantttt Aug 26, 2025
1851e01
Merge pull request #25 from swciitg/dev
dishantttt Aug 26, 2025
a1994b1
Merge pull request #26 from swciitg/admin-panel
dishantttt Aug 26, 2025
98c1339
Merge pull request #27 from swciitg/main
dishantttt Aug 26, 2025
f10355f
Merge pull request #28 from swciitg/dev
dishantttt Aug 26, 2025
800bc55
Merge pull request #29 from swciitg/admin-panel
laladwesh Aug 27, 2025
c4c4de8
Update Dockerfile.prod
kvineet002 Aug 29, 2025
7df620f
Update docker-compose.prod.yml
kvineet002 Aug 29, 2025
e91f8e1
Implement health check endpoint
kvineet002 Aug 29, 2025
f290258
Merge pull request #30 from swciitg/kvineet002-patch-1
kvineet002 Aug 29, 2025
2d59c91
Merge pull request #31 from swciitg/main
dishantttt Sep 1, 2025
a0ef0f2
Merge pull request #32 from swciitg/dev
dishantttt Sep 1, 2025
59f2033
Fixed timezone in exports
dishantttt Jan 19, 2026
294473d
MInor fixes in timezone updates
dishantttt Jan 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile.prod
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE ${PORT}
CMD [ "npm", "run", "start" ]
CMD ["node", "--max-old-space-size=4096", "app.js"]
12 changes: 11 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,16 @@ app.use(bodyParser.urlencoded({ extended: true }));
// res.redirect(`${adminJs.options.rootPath}/resources/KhokhaEntryModel`);
// });
app.use(process.env.BASE_URL + '/new/admin', authRoutes);
app.get((process.env.BASE_URL ) + '/health', (req, res) => {
res.status(200).json({
status: 'ok',
service: 'GateLog APIs',
uptime: process.uptime(),
timestamp: new Date().toISOString(),
version: '2.0.0'
});
});


app.use(process.env.BASE_URL, khokhaEntryRouter);
app.locals.BASE_URL = process.env.BASE_URL;
Expand All @@ -80,4 +90,4 @@ server.listen(process.env.PORT, async () => {
console.log(e.message);
}
console.log(`Server running on port ${process.env.PORT}`);
});
});
3 changes: 2 additions & 1 deletion docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ services:
- .env.prod
networks:
- one-stop-2021_default
restart: always

networks:
one-stop-2021_default:
external: true
external: true
1 change: 1 addition & 0 deletions helpers/onestopUserHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export const getOnestopUser = async (authHeader, onestopSecurityKey) => {
} else if (res.status === 418) {
throw new UserBlockedError(res.data.message);
} else {
console.log(`Unexpected error: ${res.status} - ${res.data.message}: ${e}`);
throw new CustomError(res.data.message, res.status, 'Internal Server Error');
}
}
Expand Down
40 changes: 27 additions & 13 deletions routers/khokhaEntryRouter.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ const escapeRegex = s => String(s).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const GATELOG_SECRET_KEY = process.env.GATELOG_SECRET_KEY;
const ONESTOP_LOOKUP_URL = process.env.ONESTOP_LOOKUP_URL;

const IST_OFFSET_MS = 330 * 60 * 1000;
const toISTISOString = (value) => {
if (!value) return '';
const date = new Date(value);
if (isNaN(date)) return '';
return new Date(date.getTime() + IST_OFFSET_MS).toISOString();
};

function hmacHex(rollNo) {
return crypto.createHmac("sha256", GATELOG_SECRET_KEY)
.update(String(rollNo), "utf8")
Expand Down Expand Up @@ -198,10 +206,9 @@ khokhaEntryRouter.post("/entries/table", async (req, res) => {
isClosed: !!d.isClosed,
checkOutGate: d.checkOutGate || '',
checkInGate: d.checkInGate || '',
checkOutTime: d.checkOutTime ? new Date(d.checkOutTime).toISOString() : '',
checkInTime: d.checkInTime ? new Date(d.checkInTime).toISOString() : '',
updatedAtISO: d.updatedAt ? new Date(d.updatedAt).toISOString()
: (d.createdAt ? new Date(d.createdAt).toISOString() : '')
checkOutTime: toISTISOString(d.checkOutTime),
checkInTime: toISTISOString(d.checkInTime),
updatedAtISO: toISTISOString(d.updatedAt) || toISTISOString(d.createdAt)
}));

res.json({ draw, recordsTotal, recordsFiltered, data });
Expand Down Expand Up @@ -448,12 +455,12 @@ khokhaEntryRouter.post("/entries/export", async (req, res) => {
RoomNumber: d.roomNumber,
Destination: d.destination,
CheckOutGate: d.checkOutGate,
CheckOutTime: d.checkOutTime ? new Date(d.checkOutTime).toISOString() : '',
CheckOutTime: toISTISOString(d.checkOutTime),
CheckInGate: d.checkInGate || '',
CheckInTime: d.checkInTime ? new Date(d.checkInTime).toISOString() : '',
CheckInTime: toISTISOString(d.checkInTime),
Status: d.isClosed ? 'Closed' : 'Open',
CreatedAt: d.createdAt ? new Date(d.createdAt).toISOString() : '',
UpdatedAt: d.updatedAt ? new Date(d.updatedAt).toISOString() : '',
CreatedAt: toISTISOString(d.createdAt),
UpdatedAt: toISTISOString(d.updatedAt),
_id: d._id?.toString() || ''
}));

Expand Down Expand Up @@ -517,12 +524,12 @@ khokhaEntryRouter.post("/entries/export", async (req, res) => {
RoomNumber: d.roomNumber,
Destination: d.destination,
CheckOutGate: d.checkOutGate,
CheckOutTime: d.checkOutTime ? new Date(d.checkOutTime).toISOString() : '',
CheckOutTime: toISTISOString(d.checkOutTime),
CheckInGate: d.checkInGate || '',
CheckInTime: d.checkInTime ? new Date(d.checkInTime).toISOString() : '',
CheckInTime: toISTISOString(d.checkInTime),
Status: d.isClosed ? 'Closed' : 'Open',
CreatedAt: d.createdAt ? new Date(d.createdAt).toISOString() : '',
UpdatedAt: d.updatedAt ? new Date(d.updatedAt).toISOString() : '',
CreatedAt: toISTISOString(d.createdAt),
UpdatedAt: toISTISOString(d.updatedAt),
_id: d._id?.toString() || ''
}));

Expand Down Expand Up @@ -590,7 +597,7 @@ khokhaEntryRouter.post("/entries/export/preview", async (req, res) => {
const limit = Math.min(Math.max(parseInt(req.body.limit || "25", 10), 1), 200);
const skip = (page - 1) * limit;

const [total, results] = await Promise.all([
const [total, docs] = await Promise.all([
KhokhaEntryModel.countDocuments(q),
KhokhaEntryModel.find(q)
.sort({ [dateField]: -1 })
Expand All @@ -606,6 +613,13 @@ khokhaEntryRouter.post("/entries/export/preview", async (req, res) => {
}),
]);

const results = docs.map(d => ({
...d,
checkOutTime: toISTISOString(d.checkOutTime),
checkInTime: toISTISOString(d.checkInTime),
createdAt: toISTISOString(d.createdAt)
}));

res.json({ total, page, limit, results });
} catch (err) {
console.error("Preview error:", err);
Expand Down