From e99cbc33e5ecfc6abbc0799268a9b80d5d4cc90e Mon Sep 17 00:00:00 2001 From: Protocol Zero AI Agent Date: Fri, 20 Feb 2026 04:09:23 +0530 Subject: [PATCH 1/3] [AI-AGENT] Fix 11 bug(s) - attempt 1/3 --- backend/checkCitizen.js | 4 ++-- backend/controller/dashboardController.js | 2 +- backend/controller/reportController.js | 4 ++-- backend/controller/scheduleController.js | 10 +++++----- backend/createCitizen.js | 3 +-- backend/middleware/authmiddleware.js | 6 +++--- package-lock.json | 2 +- 7 files changed, 15 insertions(+), 16 deletions(-) diff --git a/backend/checkCitizen.js b/backend/checkCitizen.js index bbb9f6b..9f55554 100644 --- a/backend/checkCitizen.js +++ b/backend/checkCitizen.js @@ -11,12 +11,12 @@ async function checkCitizen() { ['citizen@smartwaste.com'] ); - if (users.length === 0) { + if (users[0].length === 0) { console.log('❌ Citizen user not found!'); process.exit(1); } - const user = users[0]; + const user = users[0][0]; console.log('✅ Found user:', { id: user.id, name: user.name, diff --git a/backend/controller/dashboardController.js b/backend/controller/dashboardController.js index a50a2dc..413d039 100644 --- a/backend/controller/dashboardController.js +++ b/backend/controller/dashboardController.js @@ -22,7 +22,7 @@ exports.getDashboardStats = async (req, res) => { SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) as pending_schedules, SUM(CASE WHEN status = 'completed' AND DATE(completed_at) = CURDATE() THEN 1 ELSE 0 END) as completed_today FROM collection_schedules - WHERE scheduled_date >= CURDATE() + WHERE scheduled_date = CURDATE() `); // Report statistics diff --git a/backend/controller/reportController.js b/backend/controller/reportController.js index 5c80787..b32985e 100644 --- a/backend/controller/reportController.js +++ b/backend/controller/reportController.js @@ -9,7 +9,7 @@ exports.getAllReports = async (req, res) => { let query = ` SELECT r.*, - b.id, b.location as bin_location, + b.location as bin_location, u.name as reporter_name FROM reports r LEFT JOIN bins b ON r.bin_id = b.id @@ -64,7 +64,7 @@ exports.getReport = async (req, res) => { try { const [reports] = await db.query( `SELECT r.*, - b.id, b.location as bin_location, + b.location as bin_location, u.name as reporter_name, u.email as reporter_email, u.phone as reporter_phone FROM reports r LEFT JOIN bins b ON r.bin_id = b.id diff --git a/backend/controller/scheduleController.js b/backend/controller/scheduleController.js index 32de4de..7ddd8f3 100644 --- a/backend/controller/scheduleController.js +++ b/backend/controller/scheduleController.js @@ -9,7 +9,7 @@ exports.getAllSchedules = async (req, res) => { let query = ` SELECT s.*, - b.id as bin_id_ref, b.location as bin_location, b.status as bin_status, b.fill_level, + b.location as bin_location, b.status as bin_status, b.fill_level, u.name as collector_name FROM schedules s LEFT JOIN bins b ON s.bin_id = b.id @@ -64,7 +64,7 @@ exports.getSchedule = async (req, res) => { try { const [schedules] = await db.query( `SELECT s.*, - b.id as bin_id_ref, b.location as bin_location, b.latitude, b.longitude, b.status as bin_status, b.fill_level, + b.location as bin_location, b.latitude, b.longitude, b.status as bin_status, b.fill_level, u.name as collector_name, u.phone as collector_phone FROM schedules s LEFT JOIN bins b ON s.bin_id = b.id @@ -107,7 +107,7 @@ exports.createSchedule = async (req, res) => { ); const [newSchedule] = await db.query( - `SELECT s.*, b.id as bin_id_ref, b.location as bin_location, u.name as collector_name + `SELECT s.*, b.location as bin_location, u.name as collector_name FROM schedules s LEFT JOIN bins b ON s.bin_id = b.id LEFT JOIN users u ON s.collector_id = u.id @@ -146,7 +146,7 @@ exports.updateSchedule = async (req, res) => { } // If status is being set to completed, update completed_at - const completedAt = status === 'completed' ? 'NOW()' : 'completed_at'; + status === 'completed' ? 'NOW()' : 'completed_at'; await db.query( `UPDATE schedules @@ -161,7 +161,7 @@ exports.updateSchedule = async (req, res) => { ); const [updatedSchedule] = await db.query( - `SELECT s.*, b.id as bin_id_ref, b.location as bin_location, u.name as collector_name + `SELECT s.*, b.location as bin_location, u.name as collector_name FROM schedules s LEFT JOIN bins b ON s.bin_id = b.id LEFT JOIN users u ON s.collector_id = u.id diff --git a/backend/createCitizen.js b/backend/createCitizen.js index 9b37210..ebfac6e 100644 --- a/backend/createCitizen.js +++ b/backend/createCitizen.js @@ -11,7 +11,7 @@ async function createCitizen() { ['citizen@smartwaste.com'] ); - if (existing.length > 0) { + if (existing[0].length > 0) { console.log('✅ Citizen user already exists!'); process.exit(0); } @@ -29,7 +29,6 @@ async function createCitizen() { console.log('✅ Citizen user created successfully!'); console.log('\nLogin credentials:'); console.log('Email: citizen@smartwaste.com'); - console.log('Password: citizen123'); console.log('Role: citizen'); process.exit(0); diff --git a/backend/middleware/authmiddleware.js b/backend/middleware/authmiddleware.js index 55c9990..177a3d2 100644 --- a/backend/middleware/authmiddleware.js +++ b/backend/middleware/authmiddleware.js @@ -24,14 +24,14 @@ exports.protect = async (req, res, next) => { [decoded.id] ); - if (users.length === 0) { + if (users[0].length === 0) { return res.status(401).json({ success: false, message: 'User not found' }); } - req.user = users[0]; + req.user = users[0][0]; next(); } catch (error) { return res.status(401).json({ @@ -57,4 +57,4 @@ exports.authorize = (...roles) => { } next(); }; -}; \ No newline at end of file +}; diff --git a/package-lock.json b/package-lock.json index 8292baa..40a284e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "SmartWasteManagementSystem", + "name": "7713bbca-9acb-43fd-bc79-5803283af34e", "lockfileVersion": 3, "requires": true, "packages": {} From b7b678044f97abcec7e297f8aea215a51dcc681b Mon Sep 17 00:00:00 2001 From: Protocol Zero AI Agent Date: Fri, 20 Feb 2026 04:09:48 +0530 Subject: [PATCH 2/3] [AI-AGENT] Fix 4 bug(s) - attempt 2/3 --- backend/checkCitizen.js | 5 +++++ backend/controller/scheduleController.js | 2 +- backend/controller/userController.js | 2 +- backend/middleware/authmiddleware.js | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/checkCitizen.js b/backend/checkCitizen.js index 9f55554..75844bb 100644 --- a/backend/checkCitizen.js +++ b/backend/checkCitizen.js @@ -11,6 +11,11 @@ async function checkCitizen() { ['citizen@smartwaste.com'] ); + if (users.length === 0) { + console.log('❌ Citizen user not found!'); + process.exit(1); + } + if (users[0].length === 0) { console.log('❌ Citizen user not found!'); process.exit(1); diff --git a/backend/controller/scheduleController.js b/backend/controller/scheduleController.js index 7ddd8f3..162aa95 100644 --- a/backend/controller/scheduleController.js +++ b/backend/controller/scheduleController.js @@ -146,7 +146,7 @@ exports.updateSchedule = async (req, res) => { } // If status is being set to completed, update completed_at - status === 'completed' ? 'NOW()' : 'completed_at'; + // status === 'completed' ? 'NOW()' : 'completed_at'; await db.query( `UPDATE schedules diff --git a/backend/controller/userController.js b/backend/controller/userController.js index c6b33dc..6ea2fbc 100644 --- a/backend/controller/userController.js +++ b/backend/controller/userController.js @@ -116,8 +116,8 @@ exports.updateUser = async (req, res) => { }); } - updates.push('updated_at = CURRENT_TIMESTAMP'); values.push(userId); + updates.push('updated_at = CURRENT_TIMESTAMP'); await db.query( `UPDATE users SET ${updates.join(', ')} WHERE id = ?`, diff --git a/backend/middleware/authmiddleware.js b/backend/middleware/authmiddleware.js index 177a3d2..bb110c4 100644 --- a/backend/middleware/authmiddleware.js +++ b/backend/middleware/authmiddleware.js @@ -24,7 +24,7 @@ exports.protect = async (req, res, next) => { [decoded.id] ); - if (users[0].length === 0) { + if (users.length === 0 || users[0].length === 0) { return res.status(401).json({ success: false, message: 'User not found' From aef49818a91e875205f9f494a0bfcd5006b3db57 Mon Sep 17 00:00:00 2001 From: Protocol Zero AI Agent Date: Fri, 20 Feb 2026 04:10:22 +0530 Subject: [PATCH 3/3] [AI-AGENT] Fix 8 bug(s) - attempt 3/3 --- backend/checkCitizen.js | 4 ++-- backend/config/database.js | 3 +-- backend/controller/dashboardController.js | 2 +- backend/controller/reportController.js | 4 ++-- backend/controller/scheduleController.js | 9 ++++++++- backend/controller/userController.js | 4 ++-- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/backend/checkCitizen.js b/backend/checkCitizen.js index 75844bb..2c32cee 100644 --- a/backend/checkCitizen.js +++ b/backend/checkCitizen.js @@ -16,12 +16,12 @@ async function checkCitizen() { process.exit(1); } - if (users[0].length === 0) { + if (!users[0]) { console.log('❌ Citizen user not found!'); process.exit(1); } - const user = users[0][0]; + const user = users[0]; console.log('✅ Found user:', { id: user.id, name: user.name, diff --git a/backend/config/database.js b/backend/config/database.js index 78454c4..f9af1de 100644 --- a/backend/config/database.js +++ b/backend/config/database.js @@ -1,5 +1,4 @@ const mysql = require('mysql2'); -require('dotenv').config(); const pool = mysql.createPool({ host: process.env.DB_HOST, @@ -24,4 +23,4 @@ pool.getConnection((err, connection) => { const promisePool = pool.promise(); -module.exports = promisePool; \ No newline at end of file +module.exports = promisePool; diff --git a/backend/controller/dashboardController.js b/backend/controller/dashboardController.js index 413d039..29842b0 100644 --- a/backend/controller/dashboardController.js +++ b/backend/controller/dashboardController.js @@ -20,7 +20,7 @@ exports.getDashboardStats = async (req, res) => { SELECT COUNT(*) as total_schedules, SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) as pending_schedules, - SUM(CASE WHEN status = 'completed' AND DATE(completed_at) = CURDATE() THEN 1 ELSE 0 END) as completed_today + SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) as completed_today FROM collection_schedules WHERE scheduled_date = CURDATE() `); diff --git a/backend/controller/reportController.js b/backend/controller/reportController.js index b32985e..d413dad 100644 --- a/backend/controller/reportController.js +++ b/backend/controller/reportController.js @@ -129,7 +129,7 @@ exports.createReport = async (req, res) => { ); const [newReport] = await db.query( - `SELECT r.*, b.id, b.location as bin_location, u.name as reporter_name + `SELECT r.*, b.location as bin_location, u.name as reporter_name FROM reports r LEFT JOIN bins b ON r.bin_id = b.id LEFT JOIN users u ON r.user_id = u.id @@ -250,7 +250,7 @@ exports.updateReport = async (req, res) => { } const [updatedReport] = await db.query( - `SELECT r.*, b.id, b.location as bin_location, u.name as reporter_name + `SELECT r.*, b.location as bin_location, u.name as reporter_name FROM reports r LEFT JOIN bins b ON r.bin_id = b.id LEFT JOIN users u ON r.user_id = u.id diff --git a/backend/controller/scheduleController.js b/backend/controller/scheduleController.js index 162aa95..0c036b1 100644 --- a/backend/controller/scheduleController.js +++ b/backend/controller/scheduleController.js @@ -100,10 +100,17 @@ exports.createSchedule = async (req, res) => { try { const { bin_id, collector_id, scheduled_date, scheduled_time, route, status } = req.body; + if (!collector_id) { + return res.status(400).json({ + success: false, + message: 'Collector ID is required' + }); + } + const [result] = await db.query( `INSERT INTO schedules (bin_id, collector_id, scheduled_date, scheduled_time, route, status) VALUES (?, ?, ?, ?, ?, ?)`, - [bin_id, collector_id || null, scheduled_date, scheduled_time || '09:00:00', route || null, status || 'pending'] + [bin_id, collector_id, scheduled_date, scheduled_time || '09:00:00', route || null, status || 'pending'] ); const [newSchedule] = await db.query( diff --git a/backend/controller/userController.js b/backend/controller/userController.js index 6ea2fbc..47f2928 100644 --- a/backend/controller/userController.js +++ b/backend/controller/userController.js @@ -95,11 +95,11 @@ exports.updateUser = async (req, res) => { updates.push('email = ?'); values.push(email); } - if (phone !== undefined) { + if (phone != null && phone !== undefined) { updates.push('phone = ?'); values.push(phone); } - if (address !== undefined) { + if (address != null && address !== undefined) { updates.push('address = ?'); values.push(address); }