|
| 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