aboutsummaryrefslogtreecommitdiff
path: root/interface
diff options
context:
space:
mode:
authorjmreddy2106 <[email protected]>2022-05-03 18:29:31 -0400
committerjmreddy2106 <[email protected]>2022-05-03 18:29:31 -0400
commitb861c79f03429313d05ff0a8105b7715aec0ef4d (patch)
treeb0dcfa8cbf2cc5ce3fda7af854c1ce84ff053cf2 /interface
parentf807467dca2f08060b0bd4aa6b30ed231bb383b7 (diff)
downloadWelfare-Schemes-DMQL-b861c79f03429313d05ff0a8105b7715aec0ef4d.tar.xz
Welfare-Schemes-DMQL-b861c79f03429313d05ff0a8105b7715aec0ef4d.zip
added geography controls
Diffstat (limited to 'interface')
-rw-r--r--interface/controllers/citizens.controller.js26
-rw-r--r--interface/controllers/district.controller.js19
-rw-r--r--interface/controllers/mandal.controller.js16
-rw-r--r--interface/controllers/state.controller.js13
-rw-r--r--interface/controllers/village.controller.js18
-rw-r--r--interface/models/state_master.model.js2
-rw-r--r--interface/public/citizens.js15
-rw-r--r--interface/routes/api/citizens.js34
-rw-r--r--interface/routes/api/geography.js42
-rw-r--r--interface/routes/index.js11
-rw-r--r--interface/views/adduser.ejs165
-rw-r--r--interface/views/citizens.ejs1
-rw-r--r--interface/views/partials/navbar.ejs5
13 files changed, 365 insertions, 2 deletions
diff --git a/interface/controllers/citizens.controller.js b/interface/controllers/citizens.controller.js
index ee9355b..0ee1d42 100644
--- a/interface/controllers/citizens.controller.js
+++ b/interface/controllers/citizens.controller.js
@@ -15,6 +15,15 @@ exports.findXCitizens = () => {
return sequelize.query(query, { type: QueryTypes.SELECT })
};
+
+exports.deleteCitizenbyId = (citizen_id) =>{
+
+ return citizens.destroy({
+ where: { citizen_id }
+ })
+
+};
+
exports.editCitizen = (citizen_id, address, mobile_num, dob, marital_status) => {
return citizens.update({
address, mobile_num, dob, marital_status
@@ -25,6 +34,23 @@ exports.editCitizen = (citizen_id, address, mobile_num, dob, marital_status) =>
});
};
+//Check Citizen exists or not
+exports.checkCitizenId = (citizen_id) => {
+ return citizens.findOne({
+ where: {
+ citizen_id
+ }
+ }).then(
+ citizen_id => {
+ if (citizen_id) {
+ return true;
+ }
+ return false;
+ }
+ )
+}
+
+
// Get total number of male and female citizens
exports.findGenderDistribution = () => {
// group by the 'gender' column
diff --git a/interface/controllers/district.controller.js b/interface/controllers/district.controller.js
new file mode 100644
index 0000000..5b21530
--- /dev/null
+++ b/interface/controllers/district.controller.js
@@ -0,0 +1,19 @@
+const db = require("../models");
+const district = db.district_master;
+
+exports.allDistricts = () => {
+ return district.findAll({
+ attributes: ['district_id', 'district_name']
+ })
+};
+
+
+exports.allDistrictsByStateId = (state_id) => {
+ const query =`SELECT * FROM district_master WHERE state_id = ${state_id}`;
+ return db.sequelize.query(query, { type: db.sequelize.QueryTypes.SELECT });
+};
+
+
+
+
+
diff --git a/interface/controllers/mandal.controller.js b/interface/controllers/mandal.controller.js
new file mode 100644
index 0000000..43842fe
--- /dev/null
+++ b/interface/controllers/mandal.controller.js
@@ -0,0 +1,16 @@
+const db = require("../models");
+const mandal = db.mandal_master;
+
+
+exports.allMandals = () => {
+ return mandal.findAll({
+ attributes: ['mandal_id', 'mandal_name']
+ })
+};
+
+
+exports.allMandalsByDistrictId = (district_id) => {
+ const query =`SELECT * FROM mandal_master WHERE district_id = ${district_id}`;
+ return db.sequelize.query(query, { type: db.sequelize.QueryTypes.SELECT });
+
+};
diff --git a/interface/controllers/state.controller.js b/interface/controllers/state.controller.js
new file mode 100644
index 0000000..1a3a4ed
--- /dev/null
+++ b/interface/controllers/state.controller.js
@@ -0,0 +1,13 @@
+const db = require("../models");
+const state = db.state_master;
+
+// function to get all states
+exports.allStates = () => {
+ const query = "SELECT * FROM state_master";
+ return db.sequelize.query(query, { type: db.sequelize.QueryTypes.SELECT });
+
+};
+
+
+
+
diff --git a/interface/controllers/village.controller.js b/interface/controllers/village.controller.js
new file mode 100644
index 0000000..0a488d4
--- /dev/null
+++ b/interface/controllers/village.controller.js
@@ -0,0 +1,18 @@
+const db = require("../models");
+const village = db.village_master;
+
+
+exports.allVillages = () => {
+ return village.findAll({
+ attributes: ['village_id', 'village_name']
+ })
+};
+
+
+exports.allVillagesByMandalId = (mandal_id) => {
+ const query =`SELECT * FROM village_master WHERE mandal_id = ${mandal_id}`;
+ return db.sequelize.query(query, { type: db.sequelize.QueryTypes.SELECT });
+
+};
+
+
diff --git a/interface/models/state_master.model.js b/interface/models/state_master.model.js
index e3129dd..450b90e 100644
--- a/interface/models/state_master.model.js
+++ b/interface/models/state_master.model.js
@@ -7,7 +7,7 @@ module.exports = (Sequelize, sequelize) => {
autoIncrement: true,
},
state_name: {
- type: Sequelize.STRING(155),
+ type: Sequelize.STRING(255),
allowNull: false,
},
});
diff --git a/interface/public/citizens.js b/interface/public/citizens.js
index ef112d1..27130ec 100644
--- a/interface/public/citizens.js
+++ b/interface/public/citizens.js
@@ -41,3 +41,18 @@ function editCitizen(event) {
},
});
}
+
+function deleteCitizenRecord(citizen) {
+ citizen_id = JSON.parse(citizen).citizen_id;
+ $.ajax({
+ url: "/api/citizens/delete",
+ type: "POST",
+ data: { citizen_id },
+ success: function (response) {
+ console.log(response);
+ location.reload();
+ }
+ });
+
+
+} \ No newline at end of file
diff --git a/interface/routes/api/citizens.js b/interface/routes/api/citizens.js
index bab5222..6dad084 100644
--- a/interface/routes/api/citizens.js
+++ b/interface/routes/api/citizens.js
@@ -18,4 +18,38 @@ router.post('/edit', (req, res) => {
}
});
+
+router.post('/delete', (req, res) => {
+ const { citizen_id } = req.body;
+ if (!citizen_id) {
+ res.status(400).json({ message: "Please fill in all fields" });
+ } else {
+ citizensController.deleteCitizenbyId(citizen_id)
+ .then(() => {
+ res.status(200).json({ message: "Citizen deleted successfully" });
+ })
+ .catch((err) => {
+ res.status(400).json({ message: err });
+ });
+ }
+} );
+
+
+router.post('/validate', (req, res) => {
+ const { citizen_id } = req.body;
+ if (!citizen_id) {
+ res.status(400).json({ message: "Please fill in all fields" });
+ } else {
+ citizensController.checkCitizenId(citizen_id)
+ .then(( isValid ) => {
+ res.status(200).json({ isValid: !isValid });
+ }
+ )
+ .catch((err) => {
+ res.status(400).json({ message: err });
+ });
+ }
+});
+
+
module.exports = router; \ No newline at end of file
diff --git a/interface/routes/api/geography.js b/interface/routes/api/geography.js
new file mode 100644
index 0000000..4667db8
--- /dev/null
+++ b/interface/routes/api/geography.js
@@ -0,0 +1,42 @@
+const express = require("express");
+const router = express.Router();
+const stateController = require("../../controllers/state.controller");
+const mandalController = require("../../controllers/mandal.controller");
+const villageController = require("../../controllers/village.controller");
+const districtController = require("../../controllers/district.controller");
+
+
+router.get("/states", (req, res) => {
+ stateController.allStates().then(states => {
+ res.send(states);
+ });
+
+});
+
+router.get("/districts/:state_id", (req, res) => {
+ const state_id = req.params.state_id;
+ districtController.allDistrictsByStateId(state_id).then(districts => {
+ res.send(districts);
+ });
+});
+router.get("/mandals/:district_id", (req, res) => {
+ const district_id = req.params.district_id;
+ mandalController.allMandalsByDistrictId(district_id).then(mandals => {
+ res.send(mandals);
+ });
+});
+
+router.get("/villages/:mandal_id", (req, res) => {
+ const mandal_id = req.params.mandal_id;
+ villageController.allVillagesByMandalId(mandal_id).then(villages => {
+ res.send(villages);
+ });
+});
+
+
+
+
+module.exports = router;
+
+
+
diff --git a/interface/routes/index.js b/interface/routes/index.js
index cdab54d..b99abbf 100644
--- a/interface/routes/index.js
+++ b/interface/routes/index.js
@@ -3,10 +3,12 @@ const router = express.Router();
const citizensController = require("../controllers/citizens.controller");
const api = require('./api');
const citizensAPI = require('./api/citizens');
+const geographyAPI = require('./api/geography');
// Setup api routes
router.use('/api', api);
router.use('/api/citizens', citizensAPI);
+router.use('/api/geography', geographyAPI);
router.get('/', (req, res) => {
@@ -29,5 +31,14 @@ router.get("/citizens", (req, res) => {
});
});
+
+router.get("/addUser", (req, res) => {
+ res.render("addUser", {
+ title: "Add User"
+ });
+ }
+);
+
+
// export the router
module.exports = router;
diff --git a/interface/views/adduser.ejs b/interface/views/adduser.ejs
new file mode 100644
index 0000000..1a96601
--- /dev/null
+++ b/interface/views/adduser.ejs
@@ -0,0 +1,165 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <%- include('partials/head') %>
+ </head>
+
+ <body>
+
+ <%- include('partials/navbar') %>
+
+ <div class="ui container segment" >
+ <form class="ui form" method="post" onsubmit="editCitizen(event)" >
+ <div class="field">
+ <label>Citizen ID</label>
+ <input
+ placeholder="Citizen ID"
+ name="citizen_id"
+ type="text"
+ autocomplete="off"
+ id="citizen_id"
+ />
+ </div>
+ <div class="field">
+ <label>First Name</label>
+ <input
+ placeholder="First Name"
+ name="first_name"
+ type="text"
+ autocomplete="off"
+ id="first_name">
+ </div>
+ <div class="field">
+ <label>Last Name</label>
+ <input
+ placeholder="Last Name"
+ name="last_name"
+ type="text"
+ autocomplete="off"
+ id="last_name">
+ <div>
+ <div class="field">
+ <label>Address</label>
+ <input
+ placeholder="Address"
+ name="address"
+ type="text"
+ autocomplete="off"
+ id="address"
+ />
+ </div>
+ <div class="field">
+ <label>Mobile Number</label>
+ <input
+ type="text"
+ name="mobile_number"
+ placeholder="Mobile Number"
+ id="mobile_number"
+ />
+ </div>
+ <div class="field">
+ <label>Date of Birth</label>
+ <input type="date" name="dob" placeholder="DOB" id="dob" />
+ </div>
+ <div class="field">
+ <label>Marital Status</label>
+ <select class="ui dropdown" id="marital_status">
+ <option value="M">Married</option>
+ <option value="UM">Unmarried</option>
+ </select>
+ </div>
+ <div class = "field">
+ <label>disabled</label>
+ <select class="ui dropdown" id="disabled">
+ <option value="Yes">Yes</option>
+ <option value="No">No</option>
+ </select>
+ </div>
+ <div class="field">
+ <label>Disabled Percentage</label>
+ <input
+ type="text"
+ name="disabled_percentage"
+ placeholder="Disabled Percentage"
+ id="disabled_percentage"
+ />
+ </div>
+ <div class="field">
+ <label>Caste</label>
+ <input
+ type="text"
+ name="caste"
+ placeholder="Caste"
+ id="caste"
+ />
+ </div>
+
+ <div class="field">
+ <label>State</label>
+ <select class="ui dropdown" id="state">
+ </select>
+ </div>
+ <div class="field">
+ <label>District</label>
+ <select class="ui dropdown" id="district">
+ </select>
+ </div>
+ <div class="field">
+ <lable>Mandal</lable>
+ <select class="ui dropdown" id="mandal">
+ </select>
+ </div>
+ <div class="field">
+ <label>Village Name</label>
+ <select class="ui dropdown" id="village">
+ </select>
+ </div>
+
+
+
+
+
+
+
+ <div class="ui primary button" id="editCitizen">Submit</div>
+ <div class="ui error message"></div>
+ </form>
+
+ </div>
+
+ </body>
+ <%- include('partials/scripts') %>
+
+ <script>
+ //gereate random data with Upper case letter with seven digit number
+ function generateCitizenId() {
+ var text = "";
+ var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ var possible2 = "0123456789";
+ text += possible.charAt(Math.floor(Math.random() * possible.length));
+ for (var i = 0; i < 7; i++)
+
+ text += possible2.charAt(Math.floor(Math.random() * possible2.length));
+
+ //validate user name with database
+ fetch("/api/citizens/validate", {
+ method: "POST",
+ headers: {'Content-Type': 'application/json'},
+ body: JSON.stringify({citizen_id: text})
+ }).then(res => {
+ if(res.status == 200){
+ document.getElementById("citizen_id").value = text;
+ }
+ else{
+ generateCitizenId();
+ }
+ });
+
+ }
+
+ generateCitizenId();
+
+
+</script>
+
+</html>
diff --git a/interface/views/citizens.ejs b/interface/views/citizens.ejs
index a1c6f5e..0e703b2 100644
--- a/interface/views/citizens.ejs
+++ b/interface/views/citizens.ejs
@@ -13,6 +13,7 @@
style="border: none; box-shadow: none"
>
<form class="ui form" method="post" onsubmit="editCitizen(event)">
+
<div class="field">
<label>Address</label>
<input
diff --git a/interface/views/partials/navbar.ejs b/interface/views/partials/navbar.ejs
index 34116ea..440497a 100644
--- a/interface/views/partials/navbar.ejs
+++ b/interface/views/partials/navbar.ejs
@@ -4,7 +4,7 @@
<span class="text">View Data</span>
<i class="dropdown icon"></i>
<div class="menu">
- <div class="item">Citizens</div>
+ <div class="item" onclick="route('citizens')">Citizens</div>
<div class="item">
<i class="dropdown icon"></i>
<span class="text">Amenities</span>
@@ -42,6 +42,9 @@
</div>
</div>
</div>
+
+ <a class="item" onclick="route('addUser')"> Add User </a>
+
<div class="right menu">
<div class="item">
<div class="ui icon input">