From 45ed5c37a3ec4155616334b7e09a2c1679b3fb52 Mon Sep 17 00:00:00 2001 From: Bobby Date: Tue, 3 May 2022 15:25:08 -0400 Subject: working edit --- interface/config/db.config.js | 2 +- interface/controllers/citizens.controller.js | 26 ++++----- interface/models/citizens.model.js | 1 - interface/public/citizens.js | 43 ++++++++++++++ interface/public/verify.js | 5 +- interface/routes/api/citizens.js | 21 +++++++ interface/routes/index.js | 2 + interface/views/citizens.ejs | 86 +++++++--------------------- interface/views/index.ejs | 1 - interface/views/partials/scripts.ejs | 7 +-- 10 files changed, 104 insertions(+), 90 deletions(-) create mode 100644 interface/public/citizens.js create mode 100644 interface/routes/api/citizens.js 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/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 @@ - - - - <%- include('partials/head') %> @@ -44,12 +7,12 @@ <%- include('partials/navbar') %> - +
@@ -135,17 +83,27 @@ - +
<%= citizens[i].dob %> <%= citizens[i].gender %> <%= citizens[i].marital_status %> <%= citizens[i].village_name %>
-
Edit
+
+ Edit +
@@ -156,5 +114,5 @@
<%- include('partials/scripts') %> - + 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 @@ <%- include('partials/scripts') %> 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 @@ \ No newline at end of file -- cgit v1.2.3 From cce1d920245f7ee128bde6d2e978138cbbdc6e46 Mon Sep 17 00:00:00 2001 From: Bobby Date: Tue, 3 May 2022 16:19:23 -0400 Subject: added models --- interface/models/civil_supplies.model.js | 37 +++++++++++++++++++++++++++++++ interface/models/district_master.model.js | 25 +++++++++++++++++++++ interface/models/index.js | 4 ++++ interface/models/mandal_master.model.js | 25 +++++++++++++++++++++ interface/models/state_master.model.js | 15 +++++++++++++ 5 files changed, 106 insertions(+) create mode 100644 interface/models/civil_supplies.model.js create mode 100644 interface/models/district_master.model.js create mode 100644 interface/models/mandal_master.model.js create mode 100644 interface/models/state_master.model.js 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; +} -- cgit v1.2.3