diff options
| author | Bobby <[email protected]> | 2022-05-03 16:20:01 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-05-03 16:20:01 -0400 |
| commit | f807467dca2f08060b0bd4aa6b30ed231bb383b7 (patch) | |
| tree | fb511ea1d13aa022ae431163415284e55e27c1b5 | |
| parent | 40eac9bcc99f0dc0139a9356464df66e9cf5c7dc (diff) | |
| parent | cce1d920245f7ee128bde6d2e978138cbbdc6e46 (diff) | |
| download | Welfare-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.js | 2 | ||||
| -rw-r--r-- | interface/controllers/citizens.controller.js | 26 | ||||
| -rw-r--r-- | interface/models/citizens.model.js | 1 | ||||
| -rw-r--r-- | interface/models/civil_supplies.model.js | 37 | ||||
| -rw-r--r-- | interface/models/district_master.model.js | 25 | ||||
| -rw-r--r-- | interface/models/index.js | 4 | ||||
| -rw-r--r-- | interface/models/mandal_master.model.js | 25 | ||||
| -rw-r--r-- | interface/models/state_master.model.js | 15 | ||||
| -rw-r--r-- | interface/public/citizens.js | 43 | ||||
| -rw-r--r-- | interface/public/verify.js | 5 | ||||
| -rw-r--r-- | interface/routes/api/citizens.js | 21 | ||||
| -rw-r--r-- | interface/routes/index.js | 2 | ||||
| -rw-r--r-- | interface/views/citizens.ejs | 86 | ||||
| -rw-r--r-- | interface/views/index.ejs | 1 | ||||
| -rw-r--r-- | interface/views/partials/scripts.ejs | 7 |
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 |
