Add ability to assign vehicles to guards for specific shifts

Adds a new API endpoint to retrieve available vehicles by location and modifies the general planning route to include vehicle assignments for guards.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: e5565357-90e1-419f-b9a8-6ee8394636df
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/e5565357-90e1-419f-b9a8-6ee8394636df/KiuJzNf
This commit is contained in:
marco370 2025-10-22 07:50:19 +00:00
parent 52f3aee8e4
commit d7c6136fcb

View File

@ -330,6 +330,34 @@ export async function registerRoutes(app: Express): Promise<Server> {
}
});
// Get vehicles available for a location
app.get("/api/vehicles/available", isAuthenticated, async (req, res) => {
try {
const { location } = req.query;
if (!location) {
return res.status(400).json({ message: "Missing required parameter: location" });
}
// Get all vehicles for this location with status 'available'
const availableVehicles = await db
.select()
.from(vehicles)
.where(
and(
eq(vehicles.location, location as any),
eq(vehicles.status, "available")
)
)
.orderBy(vehicles.licensePlate);
res.json(availableVehicles);
} catch (error) {
console.error("Error fetching available vehicles:", error);
res.status(500).json({ message: "Failed to fetch available vehicles" });
}
});
// ============= VEHICLE ROUTES =============
app.get("/api/vehicles", isAuthenticated, async (req, res) => {
try {
@ -1212,7 +1240,7 @@ export async function registerRoutes(app: Express): Promise<Server> {
// Assign guard to site/date with specific time slot (supports multi-day assignments)
app.post("/api/general-planning/assign-guard", isAuthenticated, async (req, res) => {
try {
const { siteId, date, guardId, startTime, durationHours, consecutiveDays = 1 } = req.body;
const { siteId, date, guardId, startTime, durationHours, consecutiveDays = 1, vehicleId } = req.body;
if (!siteId || !date || !guardId || !startTime || !durationHours) {
return res.status(400).json({
@ -1317,6 +1345,7 @@ export async function registerRoutes(app: Express): Promise<Server> {
endTime: shiftEnd,
shiftType: site.shiftType || "fixed_post",
status: "planned",
vehicleId: vehicleId || null,
}).returning();
}