const express = require('express');
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
const cors = require('cors');
const dotenv = require('dotenv');
dotenv.config();
//! add db hear
const dbService = require('./utils/dbService');
const connection = require('./utils/dbService');
const multer = require('multer')
const moment = require("moment")
const fs = require('fs');
const path = require('path');
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// Import the routes from routes.js
const routes = require('./routes/userRoute');
// Use the imported routes in your app.js file
// app.use(routes);
// Add a prefix to all routes
app.use('/api/v1', routes);
app.post('/login', (req, res) => {
const { ao_name, ao_status } = req.body;
console.log('Received login data:', req.body);
var sql = "INSERT INTO app_occasion ( ao_name, ao_status ) VALUES ?";
var values = [[ao_name, ao_status]];
connection.query(sql, [values], function (err, result) {
if (err) throw err;
console.log("Records inserted: " + result.affectedRows);
// Show alert message
res.status(200).json({ message: 'Login data received' });
});
});
// TODO testing
app.use("/uploads", express.static("./uploads"))
// // Image storage config
// const imgconfig = multer.diskStorage({
// destination: (req, file, callback) => {
// callback(null, "./uploads");
// },
// filename: (req, file, callback) => {
// const uniqueName = `image-${Date.now()}-${file.originalname}`;
// callback(null, uniqueName);
// }
// });
// // Image filter
// const isImage = (req, file, callback) => {
// if (file.mimetype.startsWith("image")) {
// callback(null, true);
// } else {
// callback(new Error("Only images are allowed"));
// }
// };
// const upload = multer({
// storage: imgconfig,
// fileFilter: isImage
// });
//
// Function to generate folder name from organization name
// checking if same name folder name is exist
// fs.readdir(uploadsPath, (err, files) => {
// if (err) {
// console.error('Error reading directory:', err);
// } else {
// if (files.includes(newFolderName)) {
// console.log('Found folder in uploads directory');
// } else {
// console.log(' folder NOT found in uploads directory');
// }
// }
// });
// Helper function to create a folder name based on the organization name
const generateFolderName = (orgName, basePath) => {
// Start with the first letter of each word
const folderName = orgName
.split(" ")
.map((word) => word[0].toLowerCase())
.join("");
// Check if the folder already exists
const existingFolders = fs.readdirSync(basePath);
let uniqueFolderName = folderName;
let folderSuffix = '';
const words = orgName.split(" ");
// If the folder exists and has more words, add the second word in parentheses
if (existingFolders.includes(uniqueFolderName) && words.length > 1) {
folderSuffix = `(${words[1].toLowerCase()})`;
uniqueFolderName += folderSuffix;
}
// If it still exists, keep adding next words in parentheses until unique
let index = 2; // Start with the third word if needed
while (existingFolders.includes(uniqueFolderName) && index < words.length) {
folderSuffix = `(${words[index].toLowerCase()})`;
uniqueFolderName = folderName + folderSuffix;
index++;
}
// If after all words, it's still not unique, append a number to make it unique
let counter = 2;
while (existingFolders.includes(uniqueFolderName)) {
uniqueFolderName = `${folderName}${folderSuffix}(${counter})`;
counter++;
}
return uniqueFolderName;
};
// multer disk storage configuration
const imgconfig = multer.diskStorage({
destination: (req, file, callback) => {
const { ar_org_name } = req.body;
if (!ar_org_name) {
return callback(new Error("Organization name not provided"), false);
}
const uploadsPath = path.join(__dirname, 'uploads');
const newFolderName = generateFolderName(ar_org_name, uploadsPath);
const newFolderPath = path.join(uploadsPath, newFolderName);
// Create the new directory if it doesn't exist
fs.mkdirSync(newFolderPath, { recursive: true });
callback(null, newFolderPath);
},
filename: (req, file, callback) => {
const uniqueName = `image-${Date.now()}-${file.originalname}`;
callback(null, uniqueName);
}
});
// Image filter
const isImage = (req, file, callback) => {
if (file.mimetype.startsWith("image")) {
callback(null, true);
} else {
callback(new Error("Only images are allowed"), false);
}
};
const upload = multer({
storage: imgconfig,
fileFilter: isImage
});
// Middleware
app.use(express.json());
app.use(cors());
// Handle form submission
app.post("/testing", upload.single("ar_org_logo"), (req, res) => {
const {
ar_org_name,
ar_cp_signature,
ar_contract_number,
ar_emaill,
ar_password,
ar_conform_password,
// ar_occecation_id
} = req.body;
// console.log("ar_org_name:", ar_org_name);
// const newFolderName = ar_org_name; //'newFolder'; // Replace with your logic to generate the folder name
// const uploadsPath = path.join(__dirname, 'uploads');
// const newFolderPath = path.join(uploadsPath, newFolderName);
// // Create the new directory
// fs.mkdirSync(newFolderPath, { recursive: true });
// console.log( "res.json({ message: 'Directory created successfully' });" );
const { filename } = req.file;
if (!ar_org_name || !ar_cp_signature || !ar_contract_number || !ar_emaill || !ar_password || !ar_conform_password || !filename) {
return res.status(422).json({ status: 422, message: "Fill all the details" });
}
try {
const date = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
const userData = {
ar_org_name,
ar_cp_signature,
ar_contract_number,
ar_emaill,
ar_password,
ar_conform_password,
// ar_occecation_id,
ar_org_logo: filename,
ar_creat_at: date,
ar_status: 'pending'
};
connection.query("INSERT INTO app_cp_info SET ?", userData, (err, result) => {
if (err) {
console.error("Error inserting data", err);
return res.status(500).json({ status: 500, message: "Database insertion error" });
}
console.log("Data added successfully");
res.status(201).json({ status: 201, data: userData });
});
} catch (error) {
console.error("Error in try block", error);
res.status(500).json({ status: 500, message: "Internal server error" });
}
});
// ! i want to show all data of app_registration
app.get("/all-data-app_registration",(req,res)=>
{
try {
connection.query("SELECT * FROM app_registration",(err,result)=>{
if(err){
console.log(err)
}else{
console.log("get data successfully");
res.status(201).json({ status: 201, data: result })
}
})
} catch (error) {
res.status(422).json({ status: 422, error })
}
}
)
// Get all data (assuming this is for populating the select dropdown)
// app.get("/testing-get-data", (req, res) => {
// conn.query("SELECT ao_id, ao_name FROM some_table", (err, results) => {
// if (err) {
// console.error("Error fetching data", err);
// return res.status(500).json({ status: 500, message: "Database fetching error" });
// }
// res.status(200).json(results);
// });
// });
// !
// // Multer storage configuration
// const storage = multer.diskStorage({
// destination: function (req, file, cb) {
// cb(null, './public/Images');
// },
// filename: function (req, file, cb) {
// cb(null, `${Date.now()}_${file.originalname}`);
// }
// });
// const upload = multer({ storage });
// app.post('/testing', upload.single('ar_org_logo'), (req, res) => {
// const { ar_org_name, ar_cp_singhter, ar_contract_number, ar_emaill, ar_password, ar_conform_password, ar_occecation_id } = req.body;
// const ar_org_logo = req.file.filename;
// const sql = "INSERT INTO app_registration (ar_org_name, ar_org_logo, ar_cp_singhter, ar_contract_number, ar_emaill, ar_password, ar_conform_password, ar_occecation_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
// const values = [ar_org_name, ar_org_logo, ar_cp_singhter, ar_contract_number, ar_emaill, ar_password, ar_conform_password, ar_occecation_id];
// connection.query(sql, values, function (err, result) {
// if (err) {
// console.error('Error inserting into app_registration:', err);
// return res.status(500).json({ message: 'Registration failed', error: err.message });
// }
// console.log("Registration record inserted: " + result.affectedRows);
// res.status(200).json({ message: 'Successfully registered', ao_id: ar_occecation_id });
// });
// });
// !
// app.post('/testing', (req, res) => {
// const { ar_org_name, ar_org_logo, ar_cp_singhter, ar_contract_number, ar_emaill, ar_password, ar_conform_password, ar_occecation_id } = req.body;
// const sql = "INSERT INTO app_registration (ar_org_name, ar_org_logo, ar_cp_singhter, ar_contract_number, ar_emaill, ar_password, ar_conform_password, ar_occecation_id) VALUES ?";
// const values = [[ar_org_name, ar_org_logo, ar_cp_singhter, ar_contract_number, ar_emaill, ar_password, ar_conform_password, ar_occecation_id]];
// connection.query(sql, [values], function (err, result) {
// if (err) {
// console.error('Error inserting into app_registration:', err);
// return res.status(500).json({ message: 'Registration failed not send ' });
// }
// console.log("Registration record inserted: " + result.affectedRows);
// res.status(200).json({ message: 'Successfully send bireswar', ao_id: ar_occecation_id });
// });
// });
app.get('/testing-get-data', (req, res) => {
const query = 'SELECT * FROM app_occasion';
connection.query(query, (err, results) => {
if (err) {
console.error(err.message);
return res.status(500).send(err);
}
res.json(results);
});
});
// // for file upload
// const storage = multer.diskStorage({
// destination: function (req, file, cb) {
// return cb(null, "./public/Images")
// },
// filename: function (req, file, cb) {
// return cb(null, `${Date.now()}_${file.originalname}`)
// }
// })
// const upload = multer({ storage })
// app.post('/upload', upload.single('file'), (req, res) => {
// console.log(req.body)
// console.log(req.file)
// })
// // app.post('/upload', upload.single('image'), (req, res) => {
// // const image = req.file.filename;
// // const sql = "UPDATE app_registration SET ar_org_logo = ?";
// // db.query(sql, [image], (err, result) => {
// // if (err) return res.json({ Message: "Error" });
// // return res.json({ Status: "Success" });
// // });
// // });
// // demo 002
// app.post('/upload', upload.single('image'), (req, res) => {
// const image = req.file.filename;
// const sql = "UPDATE users SET image = ? WHERE id = ?"; // Adjust the query as needed
// const userId = 3; // Replace with the actual user ID
// const values = [image, userId];
// db.query(sql, values, (err, result) => {
// if (err) {
// return res.json({ Message: "Error" });
// }
// return res.json({ Status: "Success" });
// });
// });
// TODO testing
app.put('/update-application-status/:userId', async (req, res) => {
const { userId } = req.params;
const { application_status } = req.body;
// Update logic for the database (example using a fictitious database function)
// await database.updateApplicationStatus(userId, application_status);
// var sql = "UPDATE leave_from_rgpl SET application_status = 1 WHERE id = ?",[userId];
connection.query('UPDATE leave_from_rgpl SET ? WHERE id = ?', [{ application_status: "1" }, userId]);
// connection.query(sql, function (err, result) {
// if (err) throw err;
// console.log("Records updated: " + result.affectedRows);
// // Show alert message
// res.status(200).send('Login data received');
// });
console.log("working")
});
app.put('/rejected/:userId', async (req, res) => {
const { userId } = req.params;
const { application_status } = req.body;
// Update logic for the database (example using a fictitious database function)
// await database.updateApplicationStatus(userId, application_status);
// var sql = "UPDATE leave_from_rgpl SET application_status = 1 WHERE id = ?",[userId];
connection.query('UPDATE leave_from_rgpl SET ? WHERE id = ?', [{ application_status: "2" }, userId]);
// connection.query(sql, function (err, result) {
// if (err) throw err;
// console.log("Records updated: " + result.affectedRows);
// // Show alert message
// res.status(200).send('Login data received');
// });
console.log("working")
});
// app_super_section
// login_table_rgpl
// ! login from app_super_section
app.post('/aa', (req, res) => {
const sql = "SELECT * FROM app_super_section WHERE email = ? AND password = ?";
// const values = [
// req.body.email,
// req.body.password
// ];
connection.query(sql, [req.body.email, req.body.password], (err, data) => {
if (err) return res.json("Login Failed");
if (data.length > 0) {
return res.json("Login Successful")
} else {
return res.json("INCORRECT EMAIL OR PASSWORD");
}
});
});
// var sql = "INSERT INTO leave_from_rgpl (name, college_name, class_coordinator_name, leave_date_from, leave_time_from, leave_date_up_to, leave_time_up_to, leave_type, reason_for_leave) VALUES ?";
// var values = [
// [name, college_name, class_coordinator_name, `DATE_FORMAT('${leave_date_from}', '%Y-%m-%d`, // Format the date `TIME_FORMAT('${leave_time_from}', '%H:%i:%s.%f`, // Format the time `DATE_FORMAT('${leave_date_up_to}', '%Y-%m-%d`, // Format the date `TIME_FORMAT('${leave_time_up_to}', '%H:%i:%%f')`, // Format the time leave_type, reason_for_leave,
// ],
// ];
// connection.query(sql, [values], function (err, result) {
// if (err) throw err;
// console.log("Records inserted: " + result.affectedRows);
// // Show alert message
// res.status(200).send('Login data received');
// });
// !my code
// app.post('/login', (req, res) => {
// const { username, password } = req.body;
// console.log('Received login data:');
// // console.log('Username:', username);
// // console.log('Password:', password);
// var q = req.body.username;
// var w = req.body.password;
// // console.log(q,w);
// // module.exports =q;
// // Export q and w variables
// res.status(200).send('Login data received');
// });
// connection.connect((err) => {
// if (err) {
// console.log(err.message);
// }
// // //! this is i added for database state
// console.log('db ' + connection.state);
// // console.log(q)
// // console.log(msg);
// // });
// var sql = "INSERT INTO login (name,user_name,password) VALUES ?";
// // var { q, w } = require('./app');
// // console.log(q,w);
// var values =[[q,w,'123456']];
// connection.query(sql, [values], function (err, result) {
// if (err) throw err;
// console.log("records inserted: "+result.affectedRows);
// });
// });
// // Get all beers
// app.get('', (req, res) => {
// pool.getConnection((err, connection) => {
// if (err) throw err;
// console.log(`connected as id ${connection.threadId}`);
// connection.query('SELECT * from login', (err, rows) => {
// connection.release(); // return the connection to the pool
// if (err) {
// res.send(rows);
// } else {
// console.log(err);
// }
// });
// });
// });
app.get('/get-all-data', (req, res) => {
const query = 'SELECT * FROM leave_from_rgpl';
connection.query(query, (err, results) => {
if (err) {
console.error(err.message);
return res.status(500).send(err);
}
res.json(results);
});
});
app.put('/update-data/:id', (req, res) => {
const { id } = req.params;
const { newData } = req.body; // Replace `newData` with actual fields you want to update
const query = 'UPDATE login SET ? WHERE id = ?'; // Replace with your table and field names
connection.query(query, [newData, id], (err, results) => {
if (err) {
console.error(err.message);
return res.status(500).send(err);
}
res.json({ success: true, message: 'Data updated successfully', results });
});
});
// Endpoint to delete data
app.delete('/delete-data/:id', (req, res) => {
const { id } = req.params;
const query = 'DELETE FROM login WHERE id = ?';
connection.query(query, [id], (err, results) => {
if (err) {
console.error(err.message);
return res.status(500).send(err);
}
res.json({ success: true, message: 'Data deleted successfully', results });
});
});
app.listen(process.env.PORT, () => console.log('app is running -->', process.env.PORT));
// module.exports = 'hello world';