aboutsummaryrefslogtreecommitdiff
path: root/interface
diff options
context:
space:
mode:
authorjmreddy2106 <[email protected]>2022-05-03 20:14:35 -0400
committerjmreddy2106 <[email protected]>2022-05-03 20:14:35 -0400
commit038298fc140f8f1e0bcba02bb422ab0309a73911 (patch)
tree7d580e45895562f89f75f58103bdfeefd323907d /interface
parentb861c79f03429313d05ff0a8105b7715aec0ef4d (diff)
downloadWelfare-Schemes-DMQL-038298fc140f8f1e0bcba02bb422ab0309a73911.tar.xz
Welfare-Schemes-DMQL-038298fc140f8f1e0bcba02bb422ab0309a73911.zip
added add user form
Diffstat (limited to 'interface')
-rw-r--r--interface/controllers/citizens.controller.js8
-rw-r--r--interface/public/citizens.js4
-rw-r--r--interface/routes/api/citizens.js25
-rw-r--r--interface/views/adduser.ejs220
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 @@
<body>
<%- include('partials/navbar') %>
+
+
<div class="ui container segment" >
- <form class="ui form" method="post" onsubmit="editCitizen(event)" >
+ <h1 style="text-align: center;">Add New Citizen</h1>
+
+ <form class="ui form" method="post" onsubmit="addCitizen(event)" >
<div class="field">
<label>Citizen ID</label>
<input
@@ -41,7 +45,7 @@
<div class="field">
<label>Address</label>
<input
- placeholder="Address"
+ placeholder="House number"
name="address"
type="text"
autocomplete="off"
@@ -69,7 +73,7 @@
</select>
</div>
<div class = "field">
- <label>disabled</label>
+ <label>Disabled</label>
<select class="ui dropdown" id="disabled">
<option value="Yes">Yes</option>
<option value="No">No</option>
@@ -79,19 +83,19 @@
<label>Disabled Percentage</label>
<input
type="text"
- name="disabled_percentage"
+ name="disbaled_percentage"
placeholder="Disabled Percentage"
- id="disabled_percentage"
+ id="disbaled_percentage"
/>
</div>
<div class="field">
<label>Caste</label>
- <input
- type="text"
- name="caste"
- placeholder="Caste"
- id="caste"
- />
+ <select class="ui dropdown" id="caste">
+ <option value="OC" >OC</option>
+ <option value="SC">SC</option>
+ <option value="ST">ST</option>
+ <option value="BC">BC</option>
+ </select>
</div>
<div class="field">
@@ -115,13 +119,7 @@
</select>
</div>
-
-
-
-
-
-
- <div class="ui primary button" id="editCitizen">Submit</div>
+ <div class="ui primary button" id="add_citizen" >Submit</div>
<div class="ui error message"></div>
</form>
@@ -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;
+ }
+ });
+
</script>