diff options
Diffstat (limited to 'interface/public/adduser.js')
| -rw-r--r-- | interface/public/adduser.js | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/interface/public/adduser.js b/interface/public/adduser.js new file mode 100644 index 0000000..bee96f6 --- /dev/null +++ b/interface/public/adduser.js @@ -0,0 +1,291 @@ +$("#citizenForm").form({ + on: "blur", + inline: true, + fields: { + citizen_id: { + identifier: "citizen_id", + rules: [ + { + type: "empty", + prompt: "Please enter a citizen id", + }, + ], + }, + first_name: { + identifier: "first_name", + rules: [ + { + type: "empty", + prompt: "Please enter a first name", + }, + ], + }, + last_name: { + identifier: "last_name", + rules: [ + { + type: "empty", + prompt: "Please enter a last name", + }, + ], + }, + address: { + identifier: "address", + rules: [ + { + type: "empty", + prompt: "Please enter a address", + }, + ], + }, + mobile_number: { + identifier: "mobile_number", + rules: [ + { + type: "empty", + prompt: "Please enter a mobile number", + }, + { + type: "number", + prompt: "Please enter a valid mobile number", + }, + { + type: "minLength[10]", + prompt: "Please enter a valid mobile number", + }, + ], + }, + dob: { + identifier: "dob", + rules: [ + { + type: "empty", + prompt: "Please enter a date of birth", + }, + ], + }, + state: { + identifier: "state", + rules: [ + { + type: "empty", + prompt: "Please select a state", + }, + ], + }, + district: { + identifier: "district", + rules: [ + { + type: "empty", + prompt: "Please select a district", + }, + ], + }, + mandal: { + identifier: "mandal", + rules: [ + { + type: "empty", + prompt: "Please select a mandal", + }, + ], + }, + village: { + identifier: "village", + rules: [ + { + type: "empty", + prompt: "Please select a village", + }, + ], + }, + }, +}); + +//gereate random data with Upper case letter with seven digit number +function generateCitizenId() { + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + var possible2 = "0123456789"; + text += possible.charAt(Math.floor(Math.random() * possible.length)); + for (var i = 0; i < 7; i++) + text += possible2.charAt(Math.floor(Math.random() * possible2.length)); + + //validate user name with database + fetch("/api/citizens/validate", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ citizen_id: text }), + }).then((res) => { + if (res.status == 200) { + document.getElementById("citizen_id").value = text; + } else { + generateCitizenId(); + } + }); +} + +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); + } + }).catch((err) => { + alert(err); + }); +}); + +//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); + } + }).catch((err) => { + alert(err); + }); +}); + +//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); + } + }).catch((err) => { + alert(err); + }); +}); + +function addCitizen(event) { + event.preventDefault(); + if ($("#citizenForm form").form("is valid")) { + var formData = { + citizen_id: document.getElementById("citizen_id").value, + first_name: document.getElementById("first_name").value, + middle_name: document.getElementById("middle_name").value, + last_name: document.getElementById("last_name").value, + address: document.getElementById("address").value, + mobile_num: '+91-' + document.getElementById("mobile_number").value, + dob: document.getElementById("dob").value, + gender: document.getElementById("gender").value, + marital_status: document.getElementById("marital_status").value, + disabled: document.getElementById("disabled").value, + disbaled_percentage: document.getElementById("disbaled_percentage").value ?? 0, + caste: document.getElementById("caste").value, + village_id: document.getElementById("village").value, + }; + + fetch("/api/citizens/addnewcitizen", { + method: "POST", + body: JSON.stringify(formData), + headers: { "Content-Type": "application/json" }, + }) + .then((res) => res.json()) + .then((data) => { + if (data.message == "Citizen added successfully") { + window.location.href = "/citizens"; + } else { + console.log(data.message); + alert(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; + } +}); |
