Skip to content

Commit fe93bab

Browse files
committed
2 parents 521fdd9 + 002f639 commit fe93bab

11 files changed

+596
-137
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
.env
2-
node_modules/
2+
node_modules/
3+
.expo/

configs/mysql_config.js

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
1-
const mysql = require("mysql2");
1+
const mysql = require("mysql2/promise");
22
const dotenv = require("dotenv");
33
dotenv.config();
4-
const db = mysql.createConnection({
4+
const db = mysql.createPool({
55
host: process.env.DB_HOST, // Change in .env file
66
user: process.env.DB_USER,
77
password: process.env.DB_PASSWORD,
88
database: process.env.DB_NAME,
9-
port: 3306
9+
port: 3306,
10+
waitForConnections: true,
11+
connectionLimit: 10,
12+
queueLimit: 0
1013
});
1114

12-
db.connect((err) => {
13-
if (err) {
14-
console.error("❌ MySQL Connection Error:", err);
15-
} else {
16-
console.log("✅ Connected to MySQL Database");
17-
}
18-
});
15+
// db.connect((err) => {
16+
// if (err) {
17+
// console.error("❌ MySQL Connection Error:", err);
18+
// } else {
19+
// console.log("✅ Connected to MySQL Database");
20+
// }
21+
// });
1922

2023
module.exports=db;
2124

Lines changed: 60 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,77 @@
1-
const mysql = require("mysql2");
21
const db = require("../configs/mysql_config");
32
const asyncHandler = require("../middlewares/asyncHandler");
43

5-
6-
const getTotalFormsStatusCount_sql = `SELECT s.status, COUNT(f.status) AS count
4+
const getTotalFormsStatusCount_sql = `
5+
SELECT s.status, COUNT(f.status) AS count
76
FROM (
87
SELECT 1 AS status
9-
UNION ALL
10-
SELECT 2
11-
UNION ALL
12-
SELECT 3
13-
UNION ALL
14-
SELECT 4
15-
UNION ALL
16-
SELECT 6
17-
UNION ALL
18-
SELECT 7
19-
UNION ALL
20-
SELECT 8
21-
UNION ALL
22-
SELECT 9
8+
UNION ALL SELECT 2
9+
UNION ALL SELECT 3
10+
UNION ALL SELECT 4
11+
UNION ALL SELECT 6
12+
UNION ALL SELECT 7
13+
UNION ALL SELECT 8
14+
UNION ALL SELECT 9
2315
) AS s
2416
LEFT JOIN forms f ON f.status = s.status AND f.user_id = ?
2517
GROUP BY s.status
26-
ORDER BY s.status`;
18+
ORDER BY s.status
19+
`;
2720

2821
exports.getTotalFormsStatusCount = asyncHandler(async (req, res) => {
29-
const userId = req.params.userId;
30-
//console.log("userId (status count total):", userId);
31-
db.query(getTotalFormsStatusCount_sql, [userId], (err, results) => {
32-
if (err) {
33-
return res.status(500).json({ error: err.message });
34-
}
35-
//console.log("results:", results);
36-
if (results.length > 0) {
37-
return res.json(results);
38-
} else {
39-
return res.json(0);
40-
}
41-
});
22+
const connection = await db.getConnection();
23+
const userId = req.params.userId;
24+
25+
try {
26+
const [results] = await connection.execute(getTotalFormsStatusCount_sql, [userId]);
27+
if (results.length > 0) {
28+
res.json(results);
29+
} else {
30+
res.json(0);
31+
}
32+
} catch (err) {
33+
res.status(500).json({ error: err.message });
34+
} finally {
35+
connection.release();
36+
}
4237
});
4338

44-
const getTodayFormsStatusCount_sql = `SELECT s.status, COUNT(f.status) AS count
39+
const getTodayFormsStatusCount_sql = `
40+
SELECT s.status, COUNT(f.status) AS count
4541
FROM (
46-
SELECT 1 AS status UNION ALL
47-
SELECT 2 UNION ALL
48-
SELECT 3 UNION ALL
49-
SELECT 4 UNION ALL
50-
SELECT 6 UNION ALL
51-
SELECT 7 UNION ALL
52-
SELECT 8 UNION ALL
53-
SELECT 9
42+
SELECT 1 AS status
43+
UNION ALL SELECT 2
44+
UNION ALL SELECT 3
45+
UNION ALL SELECT 4
46+
UNION ALL SELECT 6
47+
UNION ALL SELECT 7
48+
UNION ALL SELECT 8
49+
UNION ALL SELECT 9
5450
) AS s
55-
LEFT JOIN forms f ON f.status = s.status AND f.user_id = ? AND f.created_at = ?
51+
LEFT JOIN forms f
52+
ON f.status = s.status
53+
AND f.user_id = ?
54+
AND f.created_at = ?
5655
GROUP BY s.status
57-
ORDER BY s.status`;
58-
56+
ORDER BY s.status
57+
`;
5958

6059
exports.getTodayFormsStatusCount = asyncHandler(async (req, res) => {
61-
const userId = req.params.userId;
62-
const date = new Date();
63-
const today = new Date(date.getFullYear(), date.getMonth(), date.getDate()).toLocaleDateString('en-CA');
64-
//const today = '17-04-2025'
65-
// console.log("today:", today);
66-
// console.log("userId (status count today):", userId);
67-
db.query(getTodayFormsStatusCount_sql, [userId,today], (err, results) => {
68-
if (err) {
69-
return res.status(500).json({ error: err.message });
70-
}
71-
//console.log("results (today):", results);
72-
if (results.length > 0) {
73-
return res.json(results);
74-
} else {
75-
return res.json(0);
76-
}
77-
});
78-
});
60+
const connection = await db.getConnection();
61+
const date = new Date();
62+
const userId = req.params.userId;
63+
const today = new Date(date.getFullYear(), date.getMonth(), date.getDate()).toLocaleDateString('en-CA');// 'YYYY-MM-DD'
64+
65+
try {
66+
const [results] = await connection.execute(getTodayFormsStatusCount_sql, [userId, today]);
67+
if (results.length > 0) {
68+
res.json(results);
69+
} else {
70+
res.json(0);
71+
}
72+
} catch (err) {
73+
res.status(500).json({ error: err.message });
74+
} finally {
75+
connection.release();
76+
}
77+
});
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
//const mysql = require("mysql2/promise");
2+
const db = require("../configs/mysql_config");
3+
const asyncHandler = require("../middlewares/asyncHandler");
4+
5+
const postLandformData_basicdetails_sql = `INSERT INTO forms (
6+
farmer_name, age, mobile, district, block, panchayat, hamlet,
7+
id_type, id_number, gender, spouse, type_of_households, h_members,
8+
hh_occupation, special_catog, caste, house_owner, type_of_house,
9+
drinking_water, potability, domestic_water, toilet_avail, toilet_cond,
10+
household_education, user_id, created_at, lat, lon, status, form_type
11+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
12+
13+
const postLandformData_landdetails_sql = `INSERT INTO form_lands (
14+
form_id, ownership, well_irrigation, area_irrigated, irrigated_lands,
15+
patta, total_area, taluk, firka, revenue, crop_season, livestocks,
16+
sf_number, soil_type, land_to_benefit, area_benefited,
17+
type_of_work, any_other_works, p_contribution, f_contribution,
18+
total_est, date_of_app, date_of_ins
19+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)`;
20+
21+
const postLandformData_bankdetails_sql = `INSERT INTO bank_details (
22+
form_id, account_holder_name, account_number, bank_name,
23+
branch, ifsc_code, farmer_ack
24+
) VALUES (?, ?, ?, ?, ?, ?, ?)`;
25+
26+
const postLandformData_files_sql = `INSERT INTO files (
27+
form_id, identity, geotag, patta, fmb, photo, passbook
28+
) VALUES (?, ?, ?, ?, ?, ?, ?)`;
29+
30+
exports.postLandformData = asyncHandler(async (req, res) => {
31+
const connection = await db.getConnection();
32+
await connection.beginTransaction(); // 🚀 Start transaction
33+
34+
try {
35+
const landformData = req.body;
36+
const date = new Date();
37+
const today = new Date(date.getFullYear(), date.getMonth(), date.getDate()).toLocaleDateString('en-CA');
38+
// console.log("Received landform data:", landformData);
39+
40+
const safe = (value) => value === undefined ? null : value;
41+
42+
// Insert basic details
43+
const [formResult] = await connection.execute(postLandformData_basicdetails_sql, [
44+
safe(landformData.basicDetails.name),
45+
safe(landformData.basicDetails.age),
46+
safe(landformData.basicDetails.mobile),
47+
safe(landformData.basicDetails.district),
48+
safe(landformData.basicDetails.block),
49+
safe(landformData.basicDetails.panchayat),
50+
safe(landformData.basicDetails.hamlet),
51+
safe(landformData.basicDetails.idCardType),
52+
safe(landformData.basicDetails.idCardNumber),
53+
safe(landformData.basicDetails.gender),
54+
safe(landformData.basicDetails.fatherSpouse),
55+
safe(landformData.basicDetails.householdType),
56+
safe(landformData.basicDetails.hhcombined),
57+
safe(landformData.basicDetails.occupationCombined),
58+
safe(landformData.basicDetails.specialCategoryNumber),
59+
safe(landformData.basicDetails.caste),
60+
safe(landformData.basicDetails.houseOwnership),
61+
safe(landformData.basicDetails.houseType),
62+
safe(landformData.basicDetails.drinkingWaterCombined),
63+
safe(landformData.basicDetails.potabilityCombined),
64+
safe(landformData.basicDetails.domesticWaterCombined),
65+
safe(landformData.basicDetails.toiletAvailability),
66+
safe(landformData.basicDetails.toiletCondition),
67+
safe(landformData.basicDetails.education),
68+
safe(landformData.user_id),
69+
safe(today),
70+
safe(landformData.landDevelopment.latitude),
71+
safe(landformData.landDevelopment.longitude),
72+
1,
73+
1
74+
]);
75+
76+
const form_id = formResult.insertId;
77+
console.log("Form ID:", form_id);
78+
79+
// Insert land details
80+
await connection.execute(postLandformData_landdetails_sql, [
81+
safe(form_id),
82+
safe(landformData.landOwnership.landOwnershipType),
83+
safe(landformData.landOwnership.hasWell),
84+
safe(landformData.landOwnership.areaIrrigated),
85+
safe(landformData.landOwnership.irrigatedLandCombined),
86+
safe(landformData.landOwnership.pattaNumber),
87+
safe(landformData.landOwnership.totalArea),
88+
safe(landformData.landOwnership.taluk),
89+
safe(landformData.landOwnership.firka),
90+
safe(landformData.landOwnership.revenueVillage),
91+
safe(landformData.landOwnership.cropSeasonCombined),
92+
safe(landformData.landOwnership.livestockCombined),
93+
safe(landformData.landDevelopment.sfNumber),
94+
safe(landformData.landDevelopment.soilTypeCombined),
95+
safe(landformData.landDevelopment.landBenefit),
96+
safe(landformData.landDevelopment.proposalArea),
97+
safe(landformData.landDevelopment.workType),
98+
safe(landformData.landDevelopment.otherWorks),
99+
safe(landformData.landDevelopment.pradanContribution),
100+
safe(landformData.landDevelopment.farmerContribution),
101+
safe(landformData.landDevelopment.totalEstimate),
102+
safe(today),
103+
safe(today)
104+
]);
105+
106+
//console.log("form id:", form_id);
107+
108+
// Insert bank details
109+
await connection.execute(postLandformData_bankdetails_sql, [
110+
safe(form_id),
111+
safe(landformData.bankDetails.accountHolderName),
112+
safe(landformData.bankDetails.accountNumber),
113+
safe(landformData.bankDetails.bankName),
114+
safe(landformData.bankDetails.branch),
115+
safe(landformData.bankDetails.ifscCode),
116+
safe(landformData.bankDetails.farmerAgreed),
117+
]);
118+
119+
// Optional: Insert files if present
120+
// if (landformData.files) {
121+
// await connection.execute(postLandformData_files_sql, [
122+
// safe(form_id),
123+
// safe(landformData.files.identity),
124+
// safe(landformData.files.geotag),
125+
// safe(landformData.files.patta),
126+
// safe(landformData.files.fmb),
127+
// safe(landformData.files.photo),
128+
// safe(landformData.files.passbook),
129+
// ]);
130+
// }
131+
132+
// Commit transaction
133+
await connection.commit();
134+
res.status(201).json({ message: "Form data submitted successfully", form_id });
135+
136+
} catch (error) {
137+
await connection.rollback();
138+
console.error("Error during transaction:", error);
139+
res.status(500).json({ error: "Failed to submit form data" });
140+
} finally {
141+
connection.release(); // Always release
142+
}
143+
});
144+

0 commit comments

Comments
 (0)