aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2022-05-03 16:20:01 -0400
committerGitHub <[email protected]>2022-05-03 16:20:01 -0400
commitf807467dca2f08060b0bd4aa6b30ed231bb383b7 (patch)
treefb511ea1d13aa022ae431163415284e55e27c1b5
parent40eac9bcc99f0dc0139a9356464df66e9cf5c7dc (diff)
parentcce1d920245f7ee128bde6d2e978138cbbdc6e46 (diff)
downloadWelfare-Schemes-DMQL-f807467dca2f08060b0bd4aa6b30ed231bb383b7.tar.xz
Welfare-Schemes-DMQL-f807467dca2f08060b0bd4aa6b30ed231bb383b7.zip
Merge pull request #5 from luciferreeves/main
Working Models
-rw-r--r--interface/config/db.config.js2
-rw-r--r--interface/controllers/citizens.controller.js26
-rw-r--r--interface/models/citizens.model.js1
-rw-r--r--interface/models/civil_supplies.model.js37
-rw-r--r--interface/models/district_master.model.js25
-rw-r--r--interface/models/index.js4
-rw-r--r--interface/models/mandal_master.model.js25
-rw-r--r--interface/models/state_master.model.js15
-rw-r--r--interface/public/citizens.js43
-rw-r--r--interface/public/verify.js5
-rw-r--r--interface/routes/api/citizens.js21
-rw-r--r--interface/routes/index.js2
-rw-r--r--interface/views/citizens.ejs86
-rw-r--r--interface/views/index.ejs1
-rw-r--r--interface/views/partials/scripts.ejs7
15 files changed, 210 insertions, 90 deletions
diff --git a/interface/config/db.config.js b/interface/config/db.config.js
index 622d5f5..1160420 100644
--- a/interface/config/db.config.js
+++ b/interface/config/db.config.js
@@ -3,7 +3,7 @@ module.exports = {
// The name of the database
database: process.env.DATABASE,
// The username used to connect to the database
- username: process.env.USER,
+ username: process.env.USER_NAME,
// The password used to connect to the database
password: process.env.PASSWORD,
// The dialect of the database you are connecting to
diff --git a/interface/controllers/citizens.controller.js b/interface/controllers/citizens.controller.js
index 9eaf153..ee9355b 100644
--- a/interface/controllers/citizens.controller.js
+++ b/interface/controllers/citizens.controller.js
@@ -1,35 +1,29 @@
-const req = require("express/lib/request");
const db = require("../models");
const citizens = db.citizens;
-const village_master = db.village_master;
const {QueryTypes} = require('sequelize');
const { sequelize } = require("../models");
// Retrieve all citizens from the database. Limit the number of citizens returned to 10.
exports.findXCitizens = () => {
- /**
- * select c.first_name, c.last_name, c.address, c.mobile_num, c.dob, c.gender, c.marital_status, v.village_name
- from citizens c
- join village_master v
- on c.village_id = v.village_id
- limit 10
- */
- const limit = 10;
- // Raw query in Sequelize
-
query = `select c.citizen_id, c.first_name, c.last_name, c.address, c.mobile_num, c.dob, c.gender, c.marital_status, c.village_id, v.village_name
from citizens c
join village_master v
on c.village_id = v.village_id
- limit 10`
+ order by citizen_id limit 10;`;
return sequelize.query(query, { type: QueryTypes.SELECT })
};
-
-
-
+exports.editCitizen = (citizen_id, address, mobile_num, dob, marital_status) => {
+ return citizens.update({
+ address, mobile_num, dob, marital_status
+ }, {
+ where: {
+ citizen_id
+ }
+ });
+};
// Get total number of male and female citizens
exports.findGenderDistribution = () => {
diff --git a/interface/models/citizens.model.js b/interface/models/citizens.model.js
index 5096417..3075f0f 100644
--- a/interface/models/citizens.model.js
+++ b/interface/models/citizens.model.js
@@ -1,4 +1,3 @@
-
module.exports = (Sequelize, sequelize) => {
const Citizens = sequelize.define("citizens", {
citizen_id: {
diff --git a/interface/models/civil_supplies.model.js b/interface/models/civil_supplies.model.js
new file mode 100644
index 0000000..a28f3ff
--- /dev/null
+++ b/interface/models/civil_supplies.model.js
@@ -0,0 +1,37 @@
+module.exports = (Sequelize, sequelize) => {
+ const CivilSupplies = sequelize.define("civil_supplies", {
+ civil_supply_id: {
+ type: Sequelize.INTEGER,
+ allowNull: false,
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ annual_income_year: {
+ type: Sequelize.DECIMAL(10, 2),
+ allowNull: false,
+ },
+ job_type: {
+ type: Sequelize.STRING(20),
+ allowNull: false,
+ },
+ ration_shopno: {
+ type: Sequelize.STRING(10),
+ allowNull: false,
+ },
+ citizen_id: {
+ type: Sequelize.STRING(20),
+ allowNull: false,
+ // FOREIGN KEY (citizen_id) REFERENCES public.civil_supplies(citizen_id) ON DELETE CASCADE;
+ references: {
+ model: "civil_supplies",
+ key: "citizen_id",
+ onDelete: "CASCADE",
+ },
+ },
+ age: {
+ type: Sequelize.INTEGER,
+ allowNull: false,
+ },
+ });
+ return CivilSupplies;
+}
diff --git a/interface/models/district_master.model.js b/interface/models/district_master.model.js
new file mode 100644
index 0000000..375f22c
--- /dev/null
+++ b/interface/models/district_master.model.js
@@ -0,0 +1,25 @@
+module.exports = (Sequelize, sequelize) => {
+ const DistrictMaster = sequelize.define("district_master", {
+ district_id: {
+ type: Sequelize.INTEGER,
+ allowNull: false,
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ district_name: {
+ type: Sequelize.STRING(155),
+ allowNull: false,
+ },
+ state_id: {
+ type: Sequelize.INTEGER,
+ allowNull: false,
+ // FOREIGN KEY (state_id) REFERENCES public.state_master(state_id) ON DELETE CASCADE;
+ references: {
+ model: "state_master",
+ key: "state_id",
+ onDelete: "CASCADE",
+ },
+ },
+ });
+ return DistrictMaster;
+}
diff --git a/interface/models/index.js b/interface/models/index.js
index e799e1e..8448d06 100644
--- a/interface/models/index.js
+++ b/interface/models/index.js
@@ -22,5 +22,9 @@ db.users = require('./users.model')(Sequelize, sequelize);
db.citizens = require('./citizens.model.js')(Sequelize, sequelize);
db.village_master = require('./village_master.model.js')(Sequelize, sequelize);
db.bank_master = require('./bank_master.model.js')(Sequelize, sequelize);
+db.district_master = require('./district_master.model.js')(Sequelize, sequelize);
+db.mandal_master = require('./mandal_master.model.js')(Sequelize, sequelize);
+db.civil_supplies = require('./civil_supplies.model.js')(Sequelize, sequelize);
+db.state_master = require('./state_master.model.js')(Sequelize, sequelize);
module.exports = db;
diff --git a/interface/models/mandal_master.model.js b/interface/models/mandal_master.model.js
new file mode 100644
index 0000000..7b7d16f
--- /dev/null
+++ b/interface/models/mandal_master.model.js
@@ -0,0 +1,25 @@
+module.exports = (Sequelize, sequelize) => {
+ const MandalMaster = sequelize.define("mandal_master", {
+ mandal_id: {
+ type: Sequelize.INTEGER,
+ allowNull: false,
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ mandal_name: {
+ type: Sequelize.STRING(155),
+ allowNull: false,
+ },
+ district_id: {
+ type: Sequelize.INTEGER,
+ allowNull: false,
+ // FOREIGN KEY (district_id) REFERENCES public.district_master(district_id) ON DELETE CASCADE;
+ references: {
+ model: "district_master",
+ key: "district_id",
+ onDelete: "CASCADE",
+ },
+ },
+ });
+ return MandalMaster;
+};
diff --git a/interface/models/state_master.model.js b/interface/models/state_master.model.js
new file mode 100644
index 0000000..e3129dd
--- /dev/null
+++ b/interface/models/state_master.model.js
@@ -0,0 +1,15 @@
+module.exports = (Sequelize, sequelize) => {
+ const StateMaster = sequelize.define("state_master", {
+ state_id: {
+ type: Sequelize.INTEGER,
+ allowNull: false,
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ state_name: {
+ type: Sequelize.STRING(155),
+ allowNull: false,
+ },
+ });
+ return StateMaster;
+}
diff --git a/interface/public/citizens.js b/interface/public/citizens.js
new file mode 100644
index 0000000..ef112d1
--- /dev/null
+++ b/interface/public/citizens.js
@@ -0,0 +1,43 @@
+$(".ui.form").form({
+ fields: {
+ address: "empty",
+ mobile_number: "empty",
+ dob: "empty",
+ marital_status: "empty",
+ },
+});
+
+function editCitizensRecord(citizen) {
+ citizen = JSON.parse(citizen);
+ $(".edit.modal").modal("show");
+ $("#address").val(citizen.address);
+ $("#mobile_number").val(citizen.mobile_num);
+ $("#dob").val(citizen.dob);
+ $("#marital_status").val(citizen.marital_status);
+ $('#marital_status').dropdown('set selected', citizen.marital_status);
+ $("#citizen_id").html(citizen.citizen_id);
+}
+
+const editCitizenButton = document.getElementById("editCitizen");
+editCitizenButton.addEventListener("click", editCitizen);
+
+function editCitizen(event) {
+ event.preventDefault();
+ var data = {
+ address: $("#address").val(),
+ mobile_num: $("#mobile_number").val(),
+ dob: $("#dob").val(),
+ marital_status: $("#marital_status").val(),
+ citizen_id: $("#citizen_id").html(),
+ };
+ $.ajax({
+ url: "/api/citizens/edit",
+ type: "POST",
+ data: data,
+ success: function (response) {
+ console.log(response);
+ $(".edit.modal").modal("hide");
+ location.reload();
+ },
+ });
+}
diff --git a/interface/public/verify.js b/interface/public/verify.js
index 94025f8..2351bad 100644
--- a/interface/public/verify.js
+++ b/interface/public/verify.js
@@ -10,7 +10,10 @@ if (token) {
$('#loginButton').hide();
$('#logoutButton').show();
} else {
- window.location.href = "/";
+ localStorage.removeItem("token");
+ if (window.location.pathname !== "/") {
+ window.location.href = "/";
+ }
$('#loginButton').show();
$('#logoutButton').hide();
}
diff --git a/interface/routes/api/citizens.js b/interface/routes/api/citizens.js
new file mode 100644
index 0000000..bab5222
--- /dev/null
+++ b/interface/routes/api/citizens.js
@@ -0,0 +1,21 @@
+const express = require("express");
+const router = express.Router();
+
+const citizensController = require("../../controllers/citizens.controller");
+
+router.post('/edit', (req, res) => {
+ const { citizen_id, address, mobile_num, dob, marital_status } = req.body;
+ if (!citizen_id || !address || !mobile_num || !dob || !marital_status) {
+ res.status(400).json({ message: "Please fill in all fields" });
+ } else {
+ citizensController.editCitizen(citizen_id, address, mobile_num, dob, marital_status)
+ .then(() => {
+ res.status(200).json({ message: "Citizen updated successfully" });
+ })
+ .catch((err) => {
+ res.status(400).json({ message: err });
+ });
+ }
+});
+
+module.exports = router; \ No newline at end of file
diff --git a/interface/routes/index.js b/interface/routes/index.js
index 12cd088..cdab54d 100644
--- a/interface/routes/index.js
+++ b/interface/routes/index.js
@@ -2,9 +2,11 @@ const express = require("express");
const router = express.Router();
const citizensController = require("../controllers/citizens.controller");
const api = require('./api');
+const citizensAPI = require('./api/citizens');
// Setup api routes
router.use('/api', api);
+router.use('/api/citizens', citizensAPI);
router.get('/', (req, res) => {
diff --git a/interface/views/citizens.ejs b/interface/views/citizens.ejs
index d11b4f5..a1c6f5e 100644
--- a/interface/views/citizens.ejs
+++ b/interface/views/citizens.ejs
@@ -1,42 +1,5 @@
<!DOCTYPE html>
<html lang="en">
-
-
-<script>
-
- function editCitizensRecord(citizen) {
- $(".edit.modal").modal("show");
- $("#address").val(citizen.address);
- $("#mobilenumber").val(citizen.mobile_num);
- $("#dob").val(citizen.dob);
- $("#marital_status").val(citizen.marital_status);
- $('#villagename').val(citizen.village_name);
-
- }
-
- function editCitizen(event) {
- event.preventDefault();
- var data = {
- address: $("#address").val(),
- mobilenumber: $("#mobilenumber").val(),
- dob: $("#dob").val(),
- marital_status: $("#marital_status").val(),
- villagename: $("#villagename").val(),
- };
- $.ajax({
- url: "/citizen/edit",
- type: "POST",
- data: data,
- success: function(response) {
- console.log(response);
- $(".edit.modal").modal("hide");
- location.reload();
- }
- });
- }
-
-</script>
-
<head>
<%- include('partials/head') %>
</head>
@@ -44,12 +7,12 @@
<body>
<div class="ui modal edit">
<i class="close icon"></i>
- <div class="header">Log in to continue</div>
+ <div class="header">Editing Citizen (<span id="citizen_id"></span>)</div>
<div
class="ui padded container segment"
style="border: none; box-shadow: none"
>
- <div class="ui form">
+ <form class="ui form" method="post" onsubmit="editCitizen(event)">
<div class="field">
<label>Address</label>
<input
@@ -65,18 +28,13 @@
<input
type="text"
name="mobile_number"
- placeholder="Mobuile Number"
- id="mobilenumber"
+ placeholder="Mobile Number"
+ id="mobile_number"
/>
</div>
<div class="field">
<label>Date of Birth</label>
- <input
- type="date"
- name="dob"
- placeholder="DOB"
- id="dob"
- />
+ <input type="date" name="dob" placeholder="DOB" id="dob" />
</div>
<div class="field">
<label>Marital Status</label>
@@ -85,24 +43,14 @@
<option value="UM">Unmarried</option>
</select>
</div>
- <div class="field">
- <label>Village Name</label>
- <input
- type="text"
- name="village"
- placeholder="Village Name"
- id="villagename"
- />
- </div>
-
- <div class="ui primary button" id="submit">Submit</div>
+ <div class="ui primary button" id="editCitizen">Submit</div>
<div class="ui error message"></div>
- </div>
+ </form>
</div>
</div>
<%- include('partials/navbar') %>
- <table class="ui selectable table" style="padding: 2%">
+ <table class="ui selectable table">
<thead>
<tr>
<!-- <th>Citizen ID</th> -->
@@ -135,17 +83,27 @@
<td><%= citizens[i].dob %></td>
<td><%= citizens[i].gender %></td>
<td><%= citizens[i].marital_status %></td>
- <!-- <td><%= citizens[i].disabled %></td> -->
+ <!-- <td><%= citizens[i].disabled %></td> -->
<!-- <td><%= citizens[i].disbaled_percentage %></td> -->
<!-- <td><%= citizens[i].caste %></td> -->
<td><%= citizens[i].village_name %></td>
<td>
<div class="ui teal buttons">
- <div class="ui button" onclick="editCitizensRecord(<%=JSON.stringify(citizens[i])%>)">Edit</div>
+ <div
+ class="ui button"
+ onclick="editCitizensRecord('<%=JSON.stringify(citizens[i])%>')"
+ >
+ Edit
+ </div>
<div class="ui floating dropdown icon button">
<i class="dropdown icon"></i>
<div class="menu">
- <div class="item" onclick="deleteCitizenRecord(<%= JSON.stringify(citizens[i])%>)"><i class="delete icon"></i> Delete</div>
+ <div
+ class="item"
+ onclick="deleteCitizenRecord('<%= JSON.stringify(citizens[i])%>')"
+ >
+ <i class="delete icon"></i> Delete
+ </div>
</div>
</div>
</div>
@@ -156,5 +114,5 @@
</table>
</body>
<%- include('partials/scripts') %>
-
+ <script src="/citizens.js"></script>
</html>
diff --git a/interface/views/index.ejs b/interface/views/index.ejs
index 99dc89b..ffd77e6 100644
--- a/interface/views/index.ejs
+++ b/interface/views/index.ejs
@@ -66,7 +66,6 @@
</body>
<%- include('partials/scripts') %>
<script>
- $(".ui.dropdown").dropdown();
$(".login.modal").modal("attach events", ".loginButton", "show");
</script>
<script src="/login.js"></script>
diff --git a/interface/views/partials/scripts.ejs b/interface/views/partials/scripts.ejs
index 02a61ab..0055b8e 100644
--- a/interface/views/partials/scripts.ejs
+++ b/interface/views/partials/scripts.ejs
@@ -8,10 +8,5 @@
<script src="/router.js"></script>
<script src="/logout.js"></script>
<script>
- $('.dropdown')
- .dropdown({
- // you can use any ui transition
- transition: 'drop'
- })
-;
+ $(".ui.dropdown").dropdown();
</script> \ No newline at end of file