const express = require("express"); const router = express.Router(); const db = require("../models"); const { Op } = require("sequelize"); // POST /api/v1/schedule - Save an appointment router.post("/schedule", async (req, res) => { try { const { user_id, start_time, end_time } = req.body; if (!start_time || !end_time) { return res .status(400) .json({ success: false, error: "start_time and end_time are required", }); } const appointment = await db.schedule.create({ user_id, start_time, end_time, }); res.json({ success: true, data: appointment }); } catch (err) { res.status(500).json({ success: false, error: err.message }); } }); // GET /api/v1/booked - Return available times excluding scheduled router.get("/booked", async (req, res) => { try { // For demo: get all availability, then exclude times that overlap with schedule const availabilities = await db.availability.findAll(); const schedules = await db.schedule.findAll(); // This is a simple exclusion, not a full calendar logic // For each availability, exclude if any schedule overlaps const availableTimes = availabilities.filter((avail) => { const availStart = avail.start_time; const availEnd = avail.end_time; const overlap = schedules.some((sch) => { return sch.start_time < availEnd && sch.end_time > availStart; }); return !overlap; }); res.json({ success: true, data: availableTimes }); } catch (err) { res.status(500).json({ success: false, error: err.message }); } }); module.exports = router;