You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1081 lines
46 KiB

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/modules/base/head :: head}"></head>
<style>
#btn_container button{
width: 20%;
}
</style>
<body>
<div class="wrapper">
<!-- header top menu Start -->
<header th:replace="~{fragments/modules/base/header :: header}"></header>
<!-- header top menu end -->
<div class="page-wrap">
<!--=============== Left Menu side Start ================-->
<div th:replace="~{fragments/modules/base/menu :: menu}"></div>
<!--=============== Left side End ================-->
<div class="main-content">
<div class="container-fluid">
<div class="page-header mb-2">
<div class="row align-items-end">
<div class="col-lg-8">
<div class="page-header-title">
<!-- <i class="far fa-calendar-plus bg-blue"></i> -->
<div class="d-inline">
<h5>Polling Personnel Updation</h5>
<span>Polling Personnel Update form</span>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="card" style="padding: 10px;"><span th:text="${LoginUserId}" style="display:none;" id="userIdSpan"></span>
<form id="newpollingform" enctype="multipart/form-data" >
<div class=" mb-3" style="border: 1px solid grey;padding: 10px;border-radius: 5px;">
<label class="form-label" for="slno">Unique No</label>
<input type="text" class="form-control" id="slno" readonly>
</div>
<div class=" mb-3" style="border: 1px solid grey;padding: 10px;border-radius: 5px;">
<div class="row" style="row-gap:10px;">
<div id="existing_uniquenum" style="display: none;"></div>
<div class="col-md-8 col-sm-12">
<label class="form-label" for="official_name">Name of the Official<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="official_name" placeholder="Enter Full Name" required="required" pattern="[A-Za-z.\s]+" title="Only alphabets, spaces, and dots are allowed">
</div>
<div class="col-md-4 col-sm-12">
<label class="form-label" for="official_age">Age</label>
<input type="number" class="form-control" id="official_age" placeholder="Enter Age">
</div>
<div class="col-md-4 col-sm-12">
<label class="form-label d-block">Sex<span class="text-danger">*</span></label>
<div class="d-flex flex-wrap gap-3">
<div class="form-check me-3">
<input class="form-check-input" type="radio" name="gender" id="genderMale" value="M" required="required">
<label class="form-check-label pr-4" for="genderMale">Male</label>
</div>
<div class="form-check me-3">
<input class="form-check-input" type="radio" name="gender" id="genderFemale" value="F">
<label class="form-check-label pr-4" for="genderFemale">Female</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="gender" id="genderTransgender" value="T">
<label class="form-check-label pr-4" for="genderTransgender">Transgender</label>
</div>
</div>
</div>
<div class="col-md-4 col-sm-12" style="display: none">
<label class="form-label">Designation<span class="text-danger">*</span></label>
<select id="design_dropdown" class="form-control" required="required" readonly>
<option value="">Select</option>
</select>
</div>
<div class="col-md-4 col-sm-12">
<label class="form-label" for="pollperson_desig">Designation</label>
<input type="text" class="form-control" id="pollperson_desig" readonly>
</div>
<div class="col-md-4 col-sm-12">
<label class="form-label">Upload Photo</label>
<input type="file" class="form-control" id="profileimage" accept=".jpg,.jpeg,image/jpeg" name="profileimage">
<div id="profileimage_preview" class="mt-2" style="cursor:pointer; color:blue; text-decoration:underline;display: none;"></div>
</div>
</div>
</div>
<!--<div class="card-body mb-3" style="border: 1px solid grey;padding: 10px;border-radius: 5px;">
<div class="row" style="row-gap:10px;">
<div class="col-md-4 col-sm-12">
<label class="form-label" for="basic_pay">Basic pay</label>
<input type="text" class="form-control" id="basic_pay" readonly>
</div>
<div class="col-md-4 col-sm-12">
<label class="form-label" for="grade_pay">Grade pay</label>
<input type="text" class="form-control" id="grade_pay" readonly>
</div>
<div class="col-md-4 col-sm-12">
<label class="form-label" for="pay_band">Pay Band</label>
<input type="text" class="form-control" id="pay_band" readonly>
</div>
</div>
</div>-->
<div class="card-body" style="padding: 10px;">
<div class="row" style="row-gap:10px;">
<div class="col-md-12 col-sm-12">
<div class="card-header bg-dark text-white">
<b>Residential Details</b>
</div>
<div class="card-body" style="border: 1px solid grey;border-top-color: white;border-bottom-left-radius: 5px;border-bottom-right-radius: 5px;">
<div class="row">
<div class="col-md-4">
<label class="form-label" for="res_address1">House No/ House Name</label>
<input type="text" class="form-control mb-3" id="res_address1">
</div>
<div class="col-md-4">
<label class="form-label" for="res_address2">Street Name/ Area</label>
<input type="text" class="form-control mb-3" id="res_address2">
</div>
<div class="col-md-4">
<label class="form-label" for="res_address3">City</label>
<input type="text" class="form-control mb-3" id="res_address3">
</div>
<div class="col-md-4">
<label class="form-label" for="res_pincode">Pincode</label>
<input type="text" class="form-control mb-3" id="res_pincode">
</div>
<div class="col-md-4">
<label class="form-label" for="res_police">Nearest Police Station</label>
<input type="text" class="form-control mb-3" id="res_police">
</div>
<div class="col-md-4">
<label class="form-label" for="res_phoneno">Phone No</label>
<div class="d-flex justify-content-start">
<button class="btn btn-secondary" disabled="disabled" style="height: fit-content">STD</button>
<input type="text" class="form-control mb-3 mx-2" id="res_phoneno">
</div>
</div>
<div class="col-md-4">
<label class="form-label" for="res_mobile">Mobile</label>
<input type="text" class="form-control mb-3" id="res_mobile">
</div>
<div class="col-md-4">
<div class="mb-3">
<label class="form-label" for="nativetaluk_dropdown">Native Taluk/District</label>
<select id="nativetaluk_dropdown" class="form-control mb-3">
<option value="">Select</option>
</select>
</div>
</div>
<div class="mb-3">
<label class="form-label" for="nativeassembly_dropdown">Native Assembly Constituency</label>
<select id="nativeassembly_dropdown" class="form-control mb-3">
<option value="">Select</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label" for="residentialassembly_dropdown">Residential Assembly Constituency</label>
<select id="residentialassembly_dropdown" class="form-control mb-3">
<option value="">Select</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-body mb-3" style="padding: 10px;">
<div style="border: 1px solid grey;border-radius: 5px;">
<div class="row" style="row-gap:10px;">
<div class="col-md-12 col-sm-12">
<div class="card-header">
<b>Enrolled Details</b>
</div>
<div class="card-body">
<div class="row pl-3 pb-2" style="row-gap:10px;">
<span id="epic_verify_link" style="cursor:pointer; color:blue; text-decoration:underline;">
Click here to verify EPIC No <i class="ik ik-external-link"></i>
</span>
</div>
<div class="row" style="row-gap:10px;">
<div class="col-md-6 col-sm-12">
<label class="form-label" for="epic_no">EPIC No</label>
<input type="text" class="form-control" id="epic_no">
</div>
<div class="col-md-6 col-sm-12">
<label class="form-label" for="epic_name">Name</label>
<input type="text" class="form-control" id="epic_name" readonly="readonly">
</div>
<div class="col-md-6 col-sm-12">
<label class="form-label" for="enrolledassembly_dropdown">Enrolled Assembly Constituency</label>
<select id="enrolledassembly_dropdown" class="form-control">
<option value="">Select</option>
</select>
</div>
</div>
<div class="row mt-2" style="row-gap:10px;">
<div class="col-md-6 col-sm-12">
<label class="form-label" for="part_no">Part No</label>
<input type="text" class="form-control" id="part_no">
</div>
<div class="col-md-6 col-sm-12">
<label class="form-label" for="si_no">SI. No</label>
<input type="text" class="form-control" id="si_no">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-body" style="padding: 10px;">
<div class="row" id="btn_container">
<div class="col-12 d-flex justify-content-center">
<button type="button" class="btn btn-secondary mx-2" onclick="goback()">Back</button>
<button type="submit" class="btn btn-primary mx-2" id="saveBtn">Update</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="profileImageModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Profile Photo</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body text-center">
<img id="modal_profile_image" src="" class="img-fluid rounded" style="max-height:400px;" />
</div>
</div>
</div>
</div>
<div id="pageLoader" style="display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.8); z-index: 9999; text-align: center;">
<div style="position: relative; top: 50%; transform: translateY(-50%);">
<div class="spinner-border text-primary" role="status" style="width: 3rem; height: 3rem;">
<span class="sr-only">Loading...</span>
</div>
<!-- Add the 'Please wait' text below the spinner -->
<p style="margin-top: 1rem; font-size: 1.2rem; color: #007bff;">Please wait...</p>
</div>
</div>
<div th:replace="~{fragments/modules/base/app_module_menu_box :: div}"></div>
<footer th:replace="~{fragments/modules/base/footer :: footer}"></footer>
</div>
</div>
<script th:replace="~{fragments/modules/base/script :: script}"></script>
<script type="text/javascript">
$(document).ready(function() {
let slno = sessionStorage.getItem("slno");
console.log("slno from sessionStorage:", slno);
if (!slno ) {
window.location.href = "/election/update_pollingperson/update";
}
document.getElementById("slno").value = slno;
// ❗ Remove values IMMEDIATELY so refresh loses them
sessionStorage.removeItem("slno");
let designationDropdown = document.getElementById('design_dropdown');
fetch('/election/api/dataentry/batch/getAllDesignations')
.then(response => response.json())
.then(result => {
if (result.status !== "success") {
console.error("API error:", result.message);
return;
}
let list = result.data;
// Clear existing options
designationDropdown.innerHTML = `<option value="">Select</option>`;
// Add options from the API response
list.forEach(design => {
designationDropdown.innerHTML += `
<option value="${design.new_designation}">
${design.new_designation}
</option>`;
});
// ⭐ Activate Select2 after options added
$('#design_dropdown').select2({
placeholder: "Search designation...",
allowClear: true,
width: "100%"
});
getPollingDetails(slno);
$('#design_dropdown').on('change', function () {
let selectedDesgId = $(this).val();
if (selectedDesgId) {
console.log("selectedDesgId",selectedDesgId)
getDesignationDetails(selectedDesgId);
}
else{
document.getElementById("basic_pay").value = "";
document.getElementById("grade_pay").value = "";
document.getElementById("pay_band").value = "";
}
});
})
.catch(error => {
console.error('Error fetching designation:', error);
});
let NativeTaulkDropdown = document.getElementById('nativetaluk_dropdown');
fetch('/election/api/dataentry/batch/getAllDistricts')
.then(response => response.json())
.then(result => {
if (result.status !== "success") {
console.error("API error:", result.message);
return;
}
let list = result.data;
NativeTaulkDropdown.innerHTML = `<option value="">Select</option>`;
// Add options from the API response
list.forEach(nativedis => {
NativeTaulkDropdown.innerHTML += `
<option value="${nativedis.dist_no}">
${nativedis.dist_name}
</option>`;
});
$('#nativetaluk_dropdown').select2({
placeholder: "Search",
allowClear: true,
width: "100%"
});
if (window.editHomeDist) {
$('#nativetaluk_dropdown').val(window.editHomeDist).trigger('change');
}
})
.catch(error => {
console.error('Error fetching in District :', error);
});
let NativeAcDropdown = document.getElementById('nativeassembly_dropdown');
let ResiAcDropdown = document.getElementById('residentialassembly_dropdown');
let EnrollAsDropdown = document.getElementById('enrolledassembly_dropdown');
function loadOptions(dropdown, list) {
dropdown.innerHTML = `<option value="">Select</option>`;
list.forEach(item => {
dropdown.innerHTML += `
<option value="${item.ac_no}">
${item.ac_name}
</option>`;
});
}
fetch('/election/api/dataentry/batch/getAllAclist')
.then(response => response.json())
.then(result => {
if (result.status !== "success") {
console.error("API error:", result.message);
return;
}
let list = result.data;
// Load all three dropdowns using same function
loadOptions(NativeAcDropdown, list);
loadOptions(ResiAcDropdown, list);
loadOptions(EnrollAsDropdown, list);
$('#nativeassembly_dropdown, #residentialassembly_dropdown, #enrolledassembly_dropdown').select2({
placeholder: "Search",
allowClear: true,
width: "100%"
});
// PRESELECT VALUES (ONLY IF NOT NULL)
if (window.nativeAcNo) {
$('#nativeassembly_dropdown').val(window.nativeAcNo).trigger('change');
}
if (window.resideAcNo) {
$('#residentialassembly_dropdown').val(window.resideAcNo).trigger('change');
}
if (window.enrollAcNo) {
$('#enrolledassembly_dropdown').val(window.enrollAcNo).trigger('change');
}
})
.catch(error => {
console.error('Error fetching Assembly Constituency:', error);
});
document.getElementById("official_name").addEventListener("input", function () {
document.getElementById("epic_name").value = this.value;
});
document.getElementById("epic_verify_link").addEventListener("click", function () {
window.open("https://electoralsearch.eci.gov.in/", "_blank");
});
// getOfficeDetails(officeId);
// getPollingDetails(slno);
$('#profileimage').on('input', function () {
let fileInput = this;
let file = fileInput.files[0];
// Allowed extensions
let allowedExtensions = /(\.jpg|\.jpeg)$/i;
// File name
let fileName = file.name;
// File size (10 MB = 10 * 1024 * 1024)
let maxSize = 10 * 1024 * 1024;
// 1) Validate extension
if (!allowedExtensions.test(fileName)) {
Swal.fire({
icon: 'error',
title: 'Invalid File Type',
text: 'Only JPG / JPEG images are allowed!'
});
fileInput.value = ""; // Reset file
return;
}
// 2) Validate MIME type
if (file.type !== "image/jpeg") {
Swal.fire({
icon: 'error',
title: 'Invalid Image Format',
text: 'Only JPEG images are allowed!'
});
fileInput.value = "";
return;
}
// 3) Validate size
if (file.size > maxSize) {
Swal.fire({
icon: 'error',
title: 'File Too Large',
text: 'File size must be 10 MB or less!'
});
fileInput.value = "";
return;
}
});
$('#res_pincode').on('input', function () {
// Remove anything that is not a digit
this.value = this.value.replace(/\D/g, '');
// Limit to max 6 digits
if (this.value.length > 6) {
this.value = this.value.slice(0, 6);
}
});
// PHONE NO: 8 to 10 digits
$('#res_phoneno').on('input', function () {
// Allow only digits
this.value = this.value.replace(/\D/g, '');
// Max 10 digits
if (this.value.length > 10) {
this.value = this.value.slice(0, 10);
}
});
// MOBILE NO: exactly 10 digits
$('#res_mobile').on('input', function () {
// Allow only digits
this.value = this.value.replace(/\D/g, '');
// Max 10 digits
if (this.value.length > 10) {
this.value = this.value.slice(0, 10);
}
});
// PART NO: 6 digits only
$('#part_no').on('input', function () {
this.value = this.value.replace(/\D/g, ''); // allow digits only
if (this.value.length > 6) {
this.value = this.value.slice(0, 6); // max 6 digits
}
});
// SI NO: 6 digits only
$('#si_no').on('input', function () {
this.value = this.value.replace(/\D/g, ''); // allow digits only
if (this.value.length > 6) {
this.value = this.value.slice(0, 6); // max 6 digits
}
});
$('#epic_no').on('input', function () {
// Allow only A–Z, a–z, 0–9
this.value = this.value.replace(/[^A-Za-z0-9]/g, '');
// Limit to 16 characters
if (this.value.length > 16) {
this.value = this.value.slice(0, 16);
}
});
$('#newpollingform').submit(function (e) {
e.preventDefault();
let formData = new FormData(this);
$('#saveBtn').prop('disabled', true).text('Updating...');
$('#pageLoader').show();
function setIfPresent(formData, key, value) {
if (value !== undefined && value !== null && value !== "") {
formData.set(key, value);
}
}
function setFileIfPresent(formData, key, fileInput) {
if (fileInput && fileInput.files && fileInput.files.length > 0) {
formData.set(key, fileInput.files[0]);
}
}
let userId = document.getElementById('userIdSpan').textContent;
// let batch_no = $('#batch_no').val().trim();
let official_name = $('#official_name').val().trim();
let official_age = $('#official_age').val().trim();
// Convert to number
let ageNum = parseInt(official_age, 10);
// Validate age
if(official_age){
if (isNaN(ageNum) || ageNum < 18 || ageNum > 65) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Age',
text: 'Age must be between 18 and 65'
});
return;
}
}
let gender = $("input[name='gender']:checked").val();
// let design_id=$('#design_dropdown').val();
// let design_name = $('#design_dropdown').val();
let design_name = $('#pollperson_desig').val().trim();
let respincode=$('#res_pincode').val().trim();
if(respincode){
// Rule 1: Must be exactly 6 digits & should NOT start with 0
if (!/^[1-9][0-9]{5}$/.test(respincode)) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Pincode',
text: 'Pincode must be 6 digits and cannot start with 0.'
});
return;
}
// Rule 2: Reject 123456 (sequential)
if (respincode === "123456") {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Pincode',
text: 'Sequential numbers like 123456 are not allowed.'
});
return;
}
// Rule 3: Reject all digits same (111111, 222222, etc.)
if (/^(\d)\1{5}$/.test(respincode)) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Pincode',
text: 'All digits cannot be the same.'
});
return;
}
}
let phnumber=$('#res_phoneno').val().trim();
if(phnumber){
// Validate 8 to 10 digits only
if (!/^\d{8,10}$/.test(phnumber)) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Phone Number',
text: 'Phone number must be 8 to 10 digits.'
});
return;
}
}
let mobnumber=$('#res_mobile').val().trim();
if(mobnumber){
// Rule 1: Must be exactly 10 digits & must not start with 0
if (!/^[1-9][0-9]{9}$/.test(mobnumber)) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Mobile Number',
text: 'Mobile number must be 10 digits and cannot start with 0.'
});
return;
}
// Rule 2: Reject sequential numbers like 1234567890
if (mobnumber === "1234567890") {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Mobile Number',
text: 'Sequential numbers like 1234567890 are not allowed.'
});
return;
}
// Rule 3: Reject all digits same (1111111111, 2222222222, etc.)
if (/^(\d)\1{9}$/.test(mobnumber)) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Update');
Swal.fire({
icon: 'warning',
title: 'Invalid Mobile Number',
text: 'All digits cannot be the same.'
});
return;
}
}
let native_taluk=$('#nativetaluk_dropdown').val();
let native_ac=$('#nativeassembly_dropdown').val();
let res_ac=$('#residentialassembly_dropdown').val();
let enrol_ac=$('#enrolledassembly_dropdown').val();
let epic_no = $('#epic_no').val().trim();
if(epic_no){
// Allow only 8 to 16 alphanumeric characters
let epicPattern = /^[A-Za-z0-9]{8,16}$/;
if (!epicPattern.test(epic_no)) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Save');
Swal.fire({
icon: 'warning',
title: 'Invalid EPIC Number',
text: 'EPIC number must be 8 to 16 alphanumeric characters.'
});
return;
}
}
let part_no =$('#part_no').val().trim();
let si_no = $('#si_no').val().trim();
if(part_no){
// Validate part_no
if (part_no.length > 6) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Save');
Swal.fire({
icon: 'warning',
title: 'Invalid Part No',
text: 'Maximum 6 digits allowed for Part No.'
});
return;
}
}
if(si_no){
// Validate si_no
if (si_no.length > 6) {
$('#pageLoader').hide();
$('#saveBtn').prop('disabled', false).text('Save');
Swal.fire({
icon: 'warning',
title: 'Invalid Sl. No',
text: 'Maximum 6 digits allowed for Sl No.'
});
return;
}
}
setFileIfPresent(formData, "pp_image", $('#profileimage')[0]);
formData.append("userid", userId);
let existing_uniquenum = $('#existing_uniquenum').text();
formData.append("slno", existing_uniquenum);
setIfPresent(formData, "pName", official_name);
setIfPresent(formData, "pAge", official_age);
setIfPresent(formData, "pGender", gender || "");
setIfPresent(formData, "Designation", design_name);
// setIfPresent(formData, "Designation", design_name);
setIfPresent(formData, "address1", $('#res_address1').val().trim());
setIfPresent(formData, "address2", $('#res_address2').val().trim());
setIfPresent(formData, "address3", $('#res_address3').val().trim());
setIfPresent(formData, "pincode",respincode);
setIfPresent(formData, "policest", $('#res_police').val().trim());
setIfPresent(formData, "phoneno",phnumber);
setIfPresent(formData, "mobileno",mobnumber);
setIfPresent(formData, "district",native_taluk);
setIfPresent(formData, "nativeac",native_ac);
setIfPresent(formData, "resideac",res_ac);
setIfPresent(formData, "electoracno",enrol_ac);
setIfPresent(formData, "electorpartno",part_no );
setIfPresent(formData, "electorslno", si_no);
setIfPresent(formData, "epicno",epic_no);
setIfPresent(formData,"slno",slno);
$.ajax({
url: '/election/api/updatepollperson/updateppdetailsbyid',
type: 'POST',
data: formData,
enctype: 'multipart/form-data',
processData: false,
contentType: false,
success: function (response) {
$('#pageLoader').hide();
if (response.status) {
Swal.fire({
allowOutsideClick: false,
allowEscapeKey: false,
allowEnterKey: false,
icon: 'success',
title: 'Success',
text:response.description
}).then((result) => {
window.location.href="/election/update_pollingperson/update";
});
} else {
$('#pageLoader').hide();
Swal.fire({
icon: 'warning',
title: 'Update Failed',
text: response.description || 'Something went wrong!'
});
}
$('#saveBtn').prop('disabled', false).text('Update');
},
error: function () {
$('#pageLoader').hide();
Swal.fire({
icon: 'error',
title: 'Submission Error',
text: 'Something went wrong while submitting the form.'
});
$('#saveBtn').prop('disabled', false).text('Update');
}
});
});
});
function getDesignationDetails(desgId) {
fetch('/election/api/updatepollperson/getPayDetailsByDesig?DesgName=' + desgId)
.then(response => response.json())
.then(result => {
if (result.status !== "success") {
console.error("API error:", result.message);
return;
}
let data = result.data; // your pay details row
//console.log("Designation Pay Details:", data);
// Example: set values into input fields
document.getElementById("basic_pay").value = data.basic_pay;
document.getElementById("grade_pay").value = data.grade_pay;
document.getElementById("pay_band").value = data.pay_scale;
})
.catch(error => {
console.error("Error fetching pay details:", error);
});
}
function getOfficeDetails(officeId) {
console.log("officeId="+officeId);
fetch('/election/api/dataentry/batch/getOfficeDetailsById?officeId=' + officeId)
.then(response => response.json())
.then(result => {
if (result.status !== "success") {
console.error("API error:", result.message);
return;
}
let data = result.data[0];
console.log("office Details:", data);
// Example: set values into input fields
document.getElementById("off_office_name").value = data.office_name;
document.getElementById("off_address1").value = data.address1;
document.getElementById("off_address2").value = data.address2;
document.getElementById("off_address3").value = data.address3;
document.getElementById("off_pincode").value = data.pincode;
document.getElementById("off_phoneno").value = data.phone_no;
document.getElementById("off_taluk").value = data.taluk_name;
document.getElementById("off_govt_type").value = data.govt_type;
document.getElementById("off_pub_sec").value = data.public_sector;
document.getElementById("off_localbody").value = data.local_body;
document.getElementById("off_edu_ins").value = data.edu_institution;
document.getElementById("off_category").value = data.office_category;
document.getElementById("off_assembly").value = data.office_assembly;
})
.catch(error => {
console.error("Error fetching Office details:", error);
});
}
function getPollingDetails(slno){
$('#pageLoader').show();
console.log("slno="+slno);
fetch('/election/api/updatepollperson/getPollingDetailsById?slno=' + slno)
.then(response => response.json())
.then(result => {
if (result.status !== "success") {
console.error("API error:", result.message);
return;
}
let data = result.data[0];
console.log("Polling Personnel Details:", data);
// window.editDesignationId = data.designation;
window.editDesignationId = data.designation ? data.designation.trim() : "";
window.editHomeDist = data.home_dist;
window.nativeAcNo = data.native_ac_no;
window.resideAcNo = data.reside_ac_no;
window.enrollAcNo = data.elector_ac_no;
// Example: set values into input fields
document.getElementById("official_name").value = data.name;
document.getElementById("epic_name").value = data.name;
document.getElementById("official_age").value = data.age;
document.getElementById("pollperson_desig").value=data.designation;
if (data.sex) {
let genderValue = data.sex; // M / F / T
const radio = document.querySelector(`input[name="gender"][value="${genderValue}"]`);
if (radio) radio.checked = true;
}
$('#existing_uniquenum').text(data.slno);
document.getElementById("res_address1").value = data.r_address1;
document.getElementById("res_address2").value = data.r_address2;
document.getElementById("res_address3").value = data.r_address3;
document.getElementById("res_pincode").value = data.r_pincode;
document.getElementById("res_police").value = data.r_policest;
document.getElementById("res_phoneno").value = data.r_phone_no;
document.getElementById("res_mobile").value = data.r_mobile_no;
if (window.editHomeDist) {
$('#nativetaluk_dropdown').val(window.editHomeDist).trigger('change');
}
if (window.nativeAcNo) {
$('#nativeassembly_dropdown').val(window.nativeAcNo).trigger('change');
}
if (window.resideAcNo) {
$('#residentialassembly_dropdown').val(window.resideAcNo).trigger('change');
}
if (window.enrollAcNo) {
$('#enrolledassembly_dropdown').val(window.enrollAcNo).trigger('change');
}
if (window.editDesignationId) {
$('#design_dropdown')
.val(window.editDesignationId)
.trigger('change');
}
document.getElementById("epic_no").value = data.epic_no;
document.getElementById("part_no").value = data.elector_part_no;
document.getElementById("si_no").value = data.elector_sl_no;
if (data.img_full_path) {
let url = data.img_full_path;
// Extract full file name (e.g., profile_img_02122025195649_newuser.jpg)
let fullName = url.substring(url.lastIndexOf("/") + 1);
// Extract only the part after the last underscore → newuser.jpg
let filename = fullName.includes("_")
? fullName.substring(fullName.lastIndexOf("_") + 1)
: fullName;
$("#profileimage_preview")
.text(filename)
.show()
.off("click")
.on("click", function () {
$("#modal_profile_image").attr("src", url);
let modal = new bootstrap.Modal(
document.getElementById('profileImageModal')
);
modal.show();
});
} else {
$("#profileimage_preview").hide().text('');
}
})
.catch(error => {
console.error("Error fetching Office details:", error);
})
.finally(() => {
$('#pageLoader').hide(); // ALWAYS hide loader
});
}
function goback(){
//window.location.href="/election/dataentry/batches";
window.history.back();
}
window.onload = function () {
if (performance.getEntriesByType("navigation")[0].type === "reload") {
goback();
}
};
</script>
</body>
</html>