From 038298fc140f8f1e0bcba02bb422ab0309a73911 Mon Sep 17 00:00:00 2001 From: jmreddy2106 Date: Tue, 3 May 2022 20:14:35 -0400 Subject: added add user form --- interface/controllers/citizens.controller.js | 8 + interface/public/citizens.js | 4 +- interface/routes/api/citizens.js | 25 +++ interface/views/adduser.ejs | 220 ++++++++++++++++++++++++--- 4 files changed, 238 insertions(+), 19 deletions(-) diff --git a/interface/controllers/citizens.controller.js b/interface/controllers/citizens.controller.js index 0ee1d42..0e45a13 100644 --- a/interface/controllers/citizens.controller.js +++ b/interface/controllers/citizens.controller.js @@ -66,3 +66,11 @@ exports.findGenderDistribution = () => { raw: true }); }; + + +// add new citizen +exports.addNewCitizen = (citizen_id, first_name, last_name, address, mobile_num, dob, gender, marital_status, disabled, disbaled_percentage, caste, village_id) => { + return citizens.create({ + citizen_id, first_name, last_name, address, mobile_num, dob, gender, marital_status, disabled, disbaled_percentage, caste, village_id + }); +}; \ No newline at end of file diff --git a/interface/public/citizens.js b/interface/public/citizens.js index 27130ec..540bf72 100644 --- a/interface/public/citizens.js +++ b/interface/public/citizens.js @@ -55,4 +55,6 @@ function deleteCitizenRecord(citizen) { }); -} \ No newline at end of file +} + + diff --git a/interface/routes/api/citizens.js b/interface/routes/api/citizens.js index 6dad084..40e0c16 100644 --- a/interface/routes/api/citizens.js +++ b/interface/routes/api/citizens.js @@ -52,4 +52,29 @@ router.post('/validate', (req, res) => { }); +router.post('/addnewcitizen', (req, res) => { + const { citizen_id, first_name, last_name, address, mobile_num, dob, gender, marital_status, disabled, disbaled_percentage, caste, village_id} = req.body; + + if(!citizen_id && !first_name && !last_name && !address && !mobile_num && !dob && !gender && !marital_status && !disabled && !caste && !village_id){ + + res.status(400).json({ message: "Please fill in all fields" }); + + }else{ + citizensController.addNewCitizen(citizen_id, first_name, last_name, address, mobile_num, dob, gender, marital_status, disabled, disbaled_percentage, caste, village_id).then(() => { + res.status(200).json({ message: "Citizen added successfully" }); + }).catch((err) => { + res.status(400).json({ message: err }); + }); + } + +}); + + + + + + + + + module.exports = router; \ No newline at end of file diff --git a/interface/views/adduser.ejs b/interface/views/adduser.ejs index 1a96601..5b21d72 100644 --- a/interface/views/adduser.ejs +++ b/interface/views/adduser.ejs @@ -7,9 +7,13 @@ <%- include('partials/navbar') %> + +
-
+

Add New Citizen

+ +
- +
- +
@@ -115,13 +119,7 @@
- - - - - - -
Submit
+
Submit
@@ -159,6 +157,192 @@ generateCitizenId(); + //get all states + fetch("/api/geography/states", { + method: "GET", + headers: {'Content-Type': 'application/json'} + }).then(res => res.json()).then(data => { + var state = document.getElementById("state"); + // set the first option to be the default disabled option + var disabledOption = document.createElement("option"); + disabledOption.text = "Select State"; + disabledOption.value = "undefined"; + disabledOption.disabled = true; + disabledOption.selected = true; + $(state).dropdown('set selected', disabledOption.value); + + state.add(disabledOption); + + for(var i = 0; i < data.length; i++){ + var option = document.createElement("option"); + option.value = data[i].state_id; + option.text = data[i].state_name; + state.add(option); + } + }); + + //get all districts + document.getElementById("state").addEventListener("change", function(){ + var state_id = document.getElementById("state").value; + fetch("/api/geography/districts/" + state_id, { + method: "GET", + headers: {'Content-Type': 'application/json'} + }).then(res => res.json()).then(data => { + var district = document.getElementById("district"); + district.innerHTML = ""; + var disabledOption = document.createElement("option"); + disabledOption.text = "Select District"; + disabledOption.value = "undefined"; + disabledOption.disabled = true; + disabledOption.selected = true; + $(district).dropdown('set selected', disabledOption.value); + + district.add(disabledOption); + + for(var i = 0; i < data.length; i++){ + var option = document.createElement("option"); + option.value = data[i].district_id; + option.text = data[i].district_name; + district.add(option); + } + }); + }); + + //get all mandals + document.getElementById("district").addEventListener("change", function(){ + var district_id = document.getElementById("district").value; + fetch("/api/geography/mandals/" + district_id, { + method: "GET", + headers: {'Content-Type': 'application/json'} + }).then(res => res.json()).then(data => { + var mandal = document.getElementById("mandal"); + mandal.innerHTML = ""; + var disabledOption = document.createElement("option"); + disabledOption.text = "Select Mandal"; + disabledOption.value = "undefined"; + disabledOption.disabled = true; + disabledOption.selected = true; + $(mandal).dropdown('set selected', disabledOption.value); + mandal.add(disabledOption); + + + for(var i = 0; i < data.length; i++){ + var option = document.createElement("option"); + option.value = data[i].mandal_id; + option.text = data[i].mandal_name; + mandal.add(option); + } + }); + }); + + //get all villages + document.getElementById("mandal").addEventListener("change", function(){ + var mandal_id = document.getElementById("mandal").value; + fetch("/api/geography/villages/" + mandal_id, { + method: "GET", + headers: {'Content-Type': 'application/json'} + }).then(res => res.json()).then(data => { + var village = document.getElementById("village"); + village.innerHTML = ""; + var disabledOption = document.createElement("option"); + disabledOption.text = "Select Village"; + disabledOption.value = "undefined"; + disabledOption.disabled = true; + disabledOption.selected = true; + $(village).dropdown('set selected', disabledOption.value); + village.add(disabledOption); + + for(var i = 0; i < data.length; i++){ + var option = document.createElement("option"); + option.value = data[i].village_id; + option.text = data[i].village_name; + village.add(option); + } + }); + }); + + + $(".ui.form").form({ + fields: { + first_name: "empty", + last_name: "empty", + address: "empty", + mobile_number: { + identifier: "mobile_number", + rules: [ + { + type: "length[10]", + prompt: "Please enter a valid mobile number" + } + ] + }, + dob: "empty", + marital_status: "empty", + disabled: "empty", + caste: "empty", + state: "empty", + district: "empty", + mandal: "empty", + village: "empty" + }, + }); + + function checkMobileNumber(mobile_number){ + var mobile_number = document.getElementById("mobile_number").value; + if(mobile_number.length != 10){ + return false; + } + return true; + } + + function addCitizen(event){ + event.preventDefault(); + + if($(".ui.form").form("is valid")){ + var formData = { + first_name: document.getElementById("first_name").value, + last_name: document.getElementById("last_name").value, + address: document.getElementById("address").value, + mobile_number: document.getElementById("mobile_number").value, + + dob: document.getElementById("dob").value, + marital_status: document.getElementById("marital_status").value, + disabled: document.getElementById("disabled").value, + disbaled_percentage: document.getElementById("disbaled_percentage").value, + caste: document.getElementById("caste").value, + village_id: document.getElementById("village").value, + citizen_id: document.getElementById("citizen_id").value + }; + + fetch("/api/citizens/addnewcitizen", { + method: "POST", + body: formData + }).then(res => res.json()).then(data => { + if(data.status == "success"){ + window.location.href = "/citizens"; + } + else{ + $(".ui.error.message").html(data.message); + } + }); + } + + } + + + + + document.getElementById("add_citizen").addEventListener("click", addCitizen); + + document.getElementById("disabled").addEventListener("change", function(){ + if(document.getElementById("disabled").value == "yes"){ + document.getElementById("disbaled_percentage").disabled = false; + } + else{ + document.getElementById("disbaled_percentage").disabled = true; + } + }); + -- cgit v1.2.3