Browse Source

implemented add staff module in nulm

main
AJITHKUMAR12 7 months ago
parent
commit
77314c5077
  1. 51
      gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/nulm/controller/NulmAPIController.java
  2. 44
      gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/nulm/controller/NulmController.java
  3. 152
      gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/nulm/service/NulmService.java
  4. 558
      gcc_officer_portal/src/main/resources/templates/modules/nulm/addstaff.html
  5. 20
      gcc_officer_portal/src/main/resources/templates/modules/nulm/staffupdate.html

51
gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/nulm/controller/NulmAPIController.java

@ -1132,4 +1132,55 @@ public class NulmAPIController {
public List<Map<String, Object>> getDesignations() { public List<Map<String, Object>> getDesignations() {
return nulmService.getDesignations(); return nulmService.getDesignations();
} }
/*
* @GetMapping("/parks")
*
* @ResponseBody
* public List<Map<String, Object>> getParks() {
* return nulmService.getParks();
* }
*/
@GetMapping("/parks")
public List<Map<String, Object>> getParks(@RequestParam int zone) {
return nulmService.getParks(zone);
}
@PostMapping("/create-employee")
@ResponseBody
public Map<String, Object> createEmployee(
@RequestParam String name,
@RequestParam String fhName,
@RequestParam String designation,
@RequestParam Integer designationId,
@RequestParam String aadharNo,
@RequestParam String bankAccNo,
@RequestParam String phoneNumber,
@RequestParam String address,
@RequestParam String bankName,
@RequestParam String ifscCode,
@RequestParam String branch,
@RequestParam String branchAddress,
@RequestParam Integer parkId,
@RequestParam String parkName,
@RequestParam Integer inchargeId,
@RequestParam String inchargeName,
@RequestParam Integer zone,
@RequestParam String inchargeDesignation,
@RequestParam String inchargePhone,
@RequestParam(required = false) MultipartFile uploadform,
@RequestParam(required = false) MultipartFile aadharcard,
@RequestParam(required = false) MultipartFile bankpassbook) {
return nulmService.createEmployee(
name, fhName, designation, designationId, aadharNo,
bankAccNo, phoneNumber, address,
bankName, ifscCode, branch, branchAddress,
parkId, parkName, inchargeId, inchargeName, zone, inchargeDesignation, inchargePhone,
uploadform, aadharcard, bankpassbook);
}
} }

44
gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/nulm/controller/NulmController.java

@ -358,7 +358,7 @@ public class NulmController {
} }
@GetMapping("/staffupdate") @GetMapping("/staffupdate")
public String viewSalaryReport(Model model) {
public String staffupdate(Model model) {
String LoginUserId = LoginUserInfo.getLoginUserId(); String LoginUserId = LoginUserInfo.getLoginUserId();
System.out.println("===" + LoginUserId); System.out.println("===" + LoginUserId);
@ -377,4 +377,46 @@ public class NulmController {
} }
} }
@GetMapping("/addstaff")
public String addstaff(Model model) {
String LoginUserId = LoginUserInfo.getLoginUserId();
System.out.println("===" + LoginUserId);
model.addAttribute("LoginUserId", LoginUserId);
boolean hasAccess = nulmService.hasStaffUpdateAccess(LoginUserId);
if (hasAccess) {
model.addAttribute("LoginUserId", LoginUserId);
return "modules/nulm/addstaff";
} else {
return "modules/nulm/staffupdatenoacess";
}
}
/*
* @GetMapping("/staffreport")
* public String staffreport(Model model) {
*
* String LoginUserId = LoginUserInfo.getLoginUserId();
* System.out.println("===" + LoginUserId);
* // model.addAttribute("LoginUserId", LoginUserId);
*
* boolean hasAccess = nulmService.hasStaffUpdateAccess(LoginUserId);
*
* if (hasAccess) {
*
* model.addAttribute("LoginUserId", LoginUserId);
* return "modules/nulm/staffreport";
*
* } else {
*
* return "modules/nulm/staffupdatenoacess";
* }
* }
*/
} }

152
gcc_officer_portal/src/main/java/in/gov/chennaicorporation/gccoffice/nulm/service/NulmService.java

@ -1,6 +1,7 @@
package in.gov.chennaicorporation.gccoffice.nulm.service; package in.gov.chennaicorporation.gccoffice.nulm.service;
import java.nio.file.Path; import java.nio.file.Path;
import java.sql.PreparedStatement;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
@ -26,6 +27,8 @@ import org.springframework.core.env.Environment;
import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -34,7 +37,7 @@ import java.io.IOException;
import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter; import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream; import javax.imageio.stream.ImageOutputStream;
import java.sql.Statement;
import in.gov.chennaicorporation.gccoffice.controller.DateTimeUtil; import in.gov.chennaicorporation.gccoffice.controller.DateTimeUtil;
import in.gov.chennaicorporation.gccoffice.nulm.repository.NulmRepository; import in.gov.chennaicorporation.gccoffice.nulm.repository.NulmRepository;
@ -3274,7 +3277,7 @@ public class NulmService {
var month = DateTimeUtil.getCurrentMonth(); var month = DateTimeUtil.getCurrentMonth();
var date = DateTimeUtil.getCurrentDay(); var date = DateTimeUtil.getCurrentDay();
uploadDirectory = uploadDirectory + serviceFolderName + year + "/" + month + "/" + date;
uploadDirectory = uploadDirectory + serviceFolderName + "/" + year + "/" + month + "/" + date;
try { try {
// Create directory if it doesn't exist // Create directory if it doesn't exist
@ -3293,7 +3296,7 @@ public class NulmService {
String filePath = uploadDirectory + "/" + fileName; String filePath = uploadDirectory + "/" + fileName;
String filepath_txt = "/" + serviceFolderName + year + "/" + month + "/" + date + "/" + fileName;
String filepath_txt = "/" + serviceFolderName + "/" + year + "/" + month + "/" + date + "/" + fileName;
// Create a new Path object // Create a new Path object
Path path = Paths.get(filePath); Path path = Paths.get(filePath);
@ -3357,4 +3360,147 @@ public class NulmService {
return jdbcTemplate.queryForList(sql); return jdbcTemplate.queryForList(sql);
} }
/*
* public List<Map<String, Object>> getParks() {
*
* String sql =
* "SELECT park_id, park_name, supervisor_name, supervisor_id,zone,supervisor_designation,supervisor_mobile "
* +
* "FROM park_details WHERE is_active = 1";
*
* return jdbcTemplate.queryForList(sql);
* }
*/
public List<Map<String, Object>> getParks(int zone) {
String sql = "SELECT park_id, park_name, supervisor_name, supervisor_id, zone, supervisor_designation, supervisor_mobile "
+ "FROM park_details "
+ "WHERE is_active = 1 AND zone = ?";
return jdbcTemplate.queryForList(sql, zone);
}
@Transactional
public Map<String, Object> createEmployee(
String name,
String fhName,
String designation,
Integer designationId,
String aadharNo,
String bankAccNo,
String phoneNumber,
String address,
String bankName,
String ifscCode,
String branch,
String branchAddress,
Integer parkId,
String parkName,
Integer inchargeId,
String inchargeName,
Integer zone,
String inchargeDesignation,
String inchargePhone,
MultipartFile uploadform,
MultipartFile aadharcard,
MultipartFile bankpassbook) {
Map<String, Object> response = new HashMap<>();
KeyHolder keyHolder = new GeneratedKeyHolder();
String insertSql = "INSERT INTO enrollment_table (" +
"name,f_h_name,designation,designation_id," +
"aadhar_no,bank_acc_no,phone_number,address," +
"bank_name,ifsc_code,branch,branch_address," +
"park_id,park_name,incharge_id,incharge_name," +
"zone,emp_type,incharge_designation,incharge_phoneno,appointed,registered_date,appointed_date) "
+
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'Park',?,?,1,now(),now())";
jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(insertSql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, name);
ps.setString(2, fhName);
ps.setString(3, designation);
ps.setInt(4, designationId);
ps.setString(5, aadharNo);
ps.setString(6, bankAccNo);
ps.setString(7, phoneNumber);
ps.setString(8, address);
ps.setString(9, bankName);
ps.setString(10, ifscCode);
ps.setString(11, branch);
ps.setString(12, branchAddress);
ps.setInt(13, parkId);
ps.setString(14, parkName);
ps.setInt(15, inchargeId);
ps.setString(16, inchargeName);
ps.setInt(17, zone);
ps.setString(18, inchargeDesignation);
ps.setString(19, inchargePhone);
// ps.setString(20, createdBy);
return ps;
}, keyHolder);
int enrollmentId = keyHolder.getKey().intValue();
String empSql = "SELECT IFNULL(MAX(emp_id),0) FROM enrollment_table where emp_type = 'Park' ";
Integer lastEmpId = jdbcTemplate.queryForObject(empSql, Integer.class);
int employeeId = lastEmpId + 1;
/*
* =============================
* FILE UPLOAD SECTION
* =============================
*/
StringBuilder sql = new StringBuilder("UPDATE enrollment_table SET ");
List<Object> params = new ArrayList<>();
if (uploadform != null && !uploadform.isEmpty()) {
String path = fileUpload("uploadform", String.valueOf(enrollmentId), uploadform);
sql.append("form_url=?, ");
params.add(path);
}
if (aadharcard != null && !aadharcard.isEmpty()) {
String path = fileUpload("aadharcard", String.valueOf(enrollmentId), aadharcard);
sql.append("aadhar_card_url=?, ");
params.add(path);
}
if (bankpassbook != null && !bankpassbook.isEmpty()) {
String path = fileUpload("bankpassbook", String.valueOf(enrollmentId), bankpassbook);
sql.append("bank_passbook_url=?, ");
params.add(path);
}
sql.append("emp_id=? ");
params.add(employeeId);
sql.append("WHERE enrollment_id=?");
params.add(enrollmentId);
jdbcTemplate.update(sql.toString(), params.toArray());
response.put("status", "success");
response.put("employeeId", employeeId);
return response;
}
} }

558
gcc_officer_portal/src/main/resources/templates/modules/nulm/addstaff.html

@ -0,0 +1,558 @@
<!DOCTYPE html>
<html lang="en" dir="">
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/modules/base/head :: head}"></head>
<body>
<div class="wrapper">
<header th:replace="~{fragments/modules/base/header :: header}"></header>
<div class="page-wrap">
<div th:replace="~{fragments/modules/base/menu :: menu}"></div>
<div class="main-content">
<div class="container-fluid">
<div class="page-header">
<div class="row align-items-end">
<div class="col-lg-6">
<div class="page-header-title">
<i class="ik ik-thumbs-up bg-blue"></i>
<div class="d-inline">
<h5>NULM STAFF</h5>
<span>Add Staff</span>
</div>
</div>
</div>
<div class="col-lg-6">
<nav class="breadcrumb-container" aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="/index"><i class="ik ik-home"></i></a>
</li>
<li class="breadcrumb-item active" aria-current="page">Add Staff</li>
</ol>
</nav>
</div>
</div>
</div>
<hr>
<div class="card">
<div class="card-header">
<h6><b>Create Employee</b></h6>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6"> <label>Employee Name</label> <input type="text" id="empName"
class="form-control"
oninput="this.value=this.value.replace(/[^a-zA-Z\s]/g,'').toUpperCase()"> </div>
<div class="col-md-6"> <label>Father / Husband Name</label>
<input type="text" id="fhName" class="form-control"
oninput="this.value=this.value.replace(/[^a-zA-Z\s]/g,'').toUpperCase()">
</div>
<div class="col-md-6 mt-3">
<label>Designation</label> <select id="designationId" class="form-control">
<option value="">Select</option>
</select>
</div>
<div class="col-md-6 mt-3">
<label>Zone</label> <select id="zoneId" class="form-control">
<option value="">Slect</option>
</select>
</div>
<div class="col-md-6 mt-3">
<label>Park Name</label>
<select id="parkId" class="form-control">
<option value="">Select</option>
</select>
</div>
<div class="col-md-6 mt-3">
<label>Incharge Name</label>
<input type="text" id="inchargeName" class="form-control" readonly>
<input type="hidden" id="inchargeId">
<input type="hidden" id="zone">
<input type="hidden" id="inchargeDesignation">
<input type="hidden" id="inchargePhone">
</div>
<div class="col-md-6 mt-3"> <label>Group Name</label>
<input type="text" id="groupName" disabled class="form-control">
</div>
<div class="col-md-6 mt-3"> <label>Aadhar Number</label>
<input type="text" id="aadharNo" maxlength="12" class="form-control"
oninput="this.value=this.value.replace(/[^0-9]/g,'')">
</div>
<div class="col-md-6 mt-3"> <label>Mobile Number</label>
<input type="text" id="mobileNo" class="form-control"
oninput="this.value=this.value.replace(/[^0-9]/g,'').slice(0,10)">
</div>
<div class="col-md-6 mt-3"> <label>Bank Account Number</label>
<input type="text" id="bankAccNo" class="form-control" minlength="9" maxlength="18"
oninput="this.value=this.value.replace(/[^0-9]/g,'')">
</div>
<div class="col-md-6 mt-3"> <label>Bank Name</label>
<input type="text" id="bankName" class="form-control"
oninput="this.value=this.value.replace(/[^a-zA-Z\s]/g,'').toUpperCase()">
</div>
<div class="col-md-6 mt-3"> <label>IFSC Code</label>
<input type="text" id="ifscCode" class="form-control" maxlength="11"
oninput="this.value=this.value.toUpperCase()">
</div>
<div class="col-md-6 mt-3"> <label>Branch</label>
<input type="text" id="branch" class="form-control"
oninput="this.value=this.value.replace(/[^a-zA-Z\s]/g,'').toUpperCase()">
</div>
<div class="col-md-6 mt-3"> <label>Branch Address</label>
<input type="text" id="branchAddress" class="form-control">
</div>
<div class="col-md-12 mt-3"> <label>Residential Address</label> <textarea id="address"
class="form-control"></textarea> </div>
<div class="col-md-6 mt-3"> <label>Upload Form</label>
<input type="file" id="formFile" class="form-control" accept=".jpg,.jpeg">
</div>
<div class="col-md-6 mt-3"> <label>Upload Aadhar Card</label>
<input type="file" id="aadharFile" class="form-control" accept=".jpg,.jpeg">
</div>
<div class="col-md-6 mt-3"> <label>Upload Bank Passbook</label>
<input type="file" id="bankPassbookFile" class="form-control" accept=".jpg,.jpeg">
</div>
</div>
<hr>
<div class="text-center mt-3"> <button class="btn btn-primary"
onclick="saveEmployee()">Submit</button> <button class="btn btn-secondary"
onclick="resetForm()">Reset</button> </div>
</div>
</div>
</div>
</div>
<footer th:replace="~{fragments/modules/base/footer :: footer}"></footer>
</div>
</div>
<div th:replace="~{fragments/modules/base/script :: script}"></div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<!-- DataTables -->
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.8/css/dataTables.bootstrap5.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/2.4.2/css/buttons.bootstrap5.min.css">
<script src="https://cdn.datatables.net/1.13.8/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.13.8/js/dataTables.bootstrap5.min.js"></script>
<script src="https://cdn.datatables.net/responsive/2.5.0/js/dataTables.responsive.min.js"></script>
<!-- DataTable Buttons -->
<script src="https://cdn.datatables.net/buttons/2.4.2/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/2.4.2/js/buttons.bootstrap5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
<script src="https://cdn.datatables.net/buttons/2.4.2/js/buttons.html5.min.js"></script>
<script th:inline="javascript">
$(document).ready(function () {
$.ajax({
url: "/gcc/api/nulm/designations",
type: "GET",
success: function (data) {
let options = '<option value="">Select Designation</option>';
data.forEach(function (item) {
options += `<option value="${item.designation_id}">
${item.designation}
</option>`;
});
$("#designationId").html(options);
}
});
/*$.ajax({
url: "/gcc/api/nulm/parks",
type: "GET",
success: function (data) {
let options = '<option value="">Select</option>';
data.forEach(function (p) {
options += `<option
value="${p.park_id}"
data-supervisor="${p.supervisor_name}"
data-supervisorid="${p.supervisor_id}"
data-zone="${p.zone}"
data-designation="${p.supervisor_designation}"
data-mobile="${p.supervisor_mobile}">
${p.park_name}
</option>`;
});
$("#parkId").html(options);
}
});*/
$("#zoneId").change(function () {
let zone = $(this).val();
$("#parkId").html('<option value="">Select</option>');
$("#inchargeName").val("");
if (!zone) return;
$.ajax({
url: "/gcc/api/nulm/parks",
type: "GET",
data: { zone: zone },
success: function (data) {
let options = '<option value="">Select</option>';
data.forEach(function (p) {
options += `<option
value="${p.park_id}"
data-supervisor="${p.supervisor_name}"
data-supervisorid="${p.supervisor_id}"
data-zone="${p.zone}"
data-designation="${p.supervisor_designation}"
data-mobile="${p.supervisor_mobile}">
${p.park_name}
</option>`;
});
$("#parkId").html(options);
}
});
});
});
$("#parkId").change(function () {
let selected = $(this).find(":selected");
let supervisorName = selected.data("supervisor");
let supervisorId = selected.data("supervisorid");
let zone = selected.data("zone");
if (supervisorName) {
supervisorName = supervisorName.toUpperCase();
}
let supervisorDesignation = selected.data("designation");
let supervisorMobile = selected.data("mobile");
if (supervisorDesignation) {
supervisorDesignation = supervisorDesignation.toUpperCase();
}
$("#inchargeName").val(supervisorName || "");
$("#inchargeId").val(supervisorId || "");
$("#zone").val(zone || "");
$("#inchargeDesignation").val(supervisorDesignation);
$("#inchargePhone").val(supervisorMobile);
});
$.ajax({
url: "/gcc/api/nulm/zones",
type: "GET",
success: function (data) {
let options = '<option value="">Select Zone</option>';
data.forEach(function (z) {
options += `<option value="${z}"> ${z}</option>`;
});
$("#zoneId").html(options);
}
});
function resetForm() {
// Text fields
$("#empName").val("");
$("#fhName").val("");
$("#inchargeName").val("");
$("#groupName").val("");
$("#aadharNo").val("");
$("#mobileNo").val("");
$("#bankAccNo").val("");
$("#bankName").val("");
$("#ifscCode").val("");
$("#branch").val("");
$("#branchAddress").val("");
$("#address").val("");
// Dropdowns
$("#designationId").val("");
$("#parkId").val("");
// Hidden fields
$("#inchargeId").val("");
$("#zone").val("");
$("#inchargeDesignation").val("");
$("#inchargePhone").val("");
// File inputs
$("#formFile").val("");
$("#aadharFile").val("");
$("#bankPassbookFile").val("");
}
function saveEmployee() {
let empName = $("#empName").val().trim();
let fhName = $("#fhName").val().trim();
let parkId = $("#parkId").val();
let parkName = $("#parkId option:selected").text().trim();
let designationId = $("#designationId").val();
let designationText = $("#designationId option:selected").text().trim();
let inchargeId = $("#inchargeId").val();
let inchargeName = $("#inchargeName").val();
let zone = $("#parkId option:selected").data("zone");
let inchargeDesignation = $("#inchargeDesignation").val();
let inchargePhone = $("#inchargePhone").val();
//let groupName = $("#groupName").val().trim();
let aadhar = $("#aadharNo").val().trim();
let phone = $("#mobileNo").val().trim();
let bankAcc = $("#bankAccNo").val().trim();
let bankName = $("#bankName").val().trim();
let ifscCode = $("#ifscCode").val().trim();
let branch = $("#branch").val().trim();
let branchAddress = $("#branchAddress").val().trim();
let address = $("#address").val().trim();
//let createdBy = /*[[${LoginUserId}]]*/'';
let phonePattern = /^[6-9]\d{9}$/;
let aadharPattern = /^\d{12}$/;
let bankPattern = /^[0-9]{9,18}$/;
let ifscPattern = /^[A-Z]{4}0[A-Z0-9]{6}$/;
function showWarning(msg) {
Swal.fire({
icon: 'warning',
title: 'Warning',
text: msg
});
}
/* =========================
VALIDATION
========================= */
if (!empName) {
showWarning("Please enter employee name");
$("#empName").focus();
return;
}
if (!fhName) {
showWarning("Please enter father / husband name");
$("#fhName").focus();
return;
}
if (!parkId) {
showWarning("Please select park");
return;
}
if (!designationId) {
showWarning("Please select designation");
return;
}
/*if (!groupName) {
showWarning("Please enter group name");
$("#groupName").focus();
return;
}*/
if (!aadhar) {
showWarning("Please enter aadhar number");
$("#aadharNo").focus();
return;
}
if (!aadharPattern.test(aadhar)) {
showWarning("Aadhar must be 12 digits");
$("#aadharNo").focus();
return;
}
if (!phone) {
showWarning("Please enter mobile number");
$("#mobileNo").focus();
return;
}
if (!phonePattern.test(phone)) {
showWarning("Invalid mobile number");
$("#mobileNo").focus();
return;
}
if (!bankAcc) {
showWarning("Please enter bank account number");
$("#bankAccNo").focus();
return;
}
if (!bankPattern.test(bankAcc)) {
showWarning("Bank account must be 9-18 digits");
$("#bankAccNo").focus();
return;
}
if (!bankName) {
showWarning("Please enter bank name");
$("#bankName").focus();
return;
}
if (!ifscCode) {
showWarning("Please enter IFSC code");
$("#ifscCode").focus();
return;
}
if (!ifscPattern.test(ifscCode)) {
showWarning("Invalid IFSC code (Example: SBIN0001234)");
$("#ifscCode").focus();
return;
}
if (!branch) {
showWarning("Please enter branch");
$("#branch").focus();
return;
}
if (!branchAddress) {
showWarning("Please enter branch address");
$("#branchAddress").focus();
return;
}
if (!address) {
showWarning("Please enter address");
$("#address").focus();
return;
}
/* =========================
FILE VALIDATION
========================= */
let formFile = $("#formFile")[0].files[0];
let aadharFile = $("#aadharFile")[0].files[0];
let bankFile = $("#bankPassbookFile")[0].files[0];
function validateFile(file) {
if (!file) return true;
let allowed = ["image/jpeg", "image/jpg"];
if (!allowed.includes(file.type)) {
Swal.fire({
icon: 'warning',
title: 'Invalid File',
text: 'Only JPG/JPEG allowed'
});
return false;
}
return true;
}
if (!validateFile(formFile)) return;
if (!validateFile(aadharFile)) return;
if (!validateFile(bankFile)) return;
/* =========================
FORM DATA
========================= */
let formData = new FormData();
formData.append("name", empName);
formData.append("fhName", fhName);
formData.append("designation", designationText);
formData.append("designationId", designationId);
formData.append("aadharNo", aadhar);
formData.append("bankAccNo", bankAcc);
formData.append("phoneNumber", phone);
formData.append("address", address);
formData.append("bankName", bankName);
formData.append("ifscCode", ifscCode);
formData.append("branch", branch);
formData.append("branchAddress", branchAddress);
formData.append("parkId", parkId);
formData.append("parkName", parkName);
formData.append("inchargeId", inchargeId);
formData.append("inchargeName", inchargeName);
formData.append("zone", zone);
formData.append("inchargeDesignation", inchargeDesignation);
formData.append("inchargePhone", inchargePhone);
// formData.append("createdBy", createdBy);
if (formFile) formData.append("uploadform", formFile);
if (aadharFile) formData.append("aadharcard", aadharFile);
if (bankFile) formData.append("bankpassbook", bankFile);
/* =========================
AJAX SAVE
========================= */
$.ajax({
url: "/gcc/api/nulm/create-employee",
type: "POST",
data: formData,
processData: false,
contentType: false,
success: function (res) {
Swal.fire({
icon: 'success',
title: 'Employee Added',
text: 'Employee ID ' + res.employeeId + ' added successfully'
}).then(() => {
location.reload();
});
},
error: function () {
Swal.fire({
icon: 'error',
title: 'Error',
text: 'Failed to create employee'
});
}
});
}
</script>
</body>
</html>

20
gcc_officer_portal/src/main/resources/templates/modules/nulm/staffupdate.html

@ -19,7 +19,7 @@
<i class="ik ik-thumbs-up bg-blue"></i> <i class="ik ik-thumbs-up bg-blue"></i>
<div class="d-inline"> <div class="d-inline">
<h5>NULM STAFF</h5> <h5>NULM STAFF</h5>
<span>Salary Report</span>
<span>Update Staff</span>
</div> </div>
</div> </div>
</div> </div>
@ -29,7 +29,7 @@
<li class="breadcrumb-item"> <li class="breadcrumb-item">
<a href="/index"><i class="ik ik-home"></i></a> <a href="/index"><i class="ik ik-home"></i></a>
</li> </li>
<li class="breadcrumb-item active" aria-current="page">Salary Report</li>
<li class="breadcrumb-item active" aria-current="page">Update Staff</li>
</ol> </ol>
</nav> </nav>
</div> </div>
@ -142,7 +142,7 @@
<div class="col-md-6"> <div class="col-md-6">
<label>Father / Husband Name</label> <label>Father / Husband Name</label>
<input type="text" id="fhName" <input type="text" id="fhName"
oninput="this.value = this.value.replace(/[^a-zA-Z\s]/g, '')"
oninput="this.value = this.value.replace(/[^a-zA-Z\s]/g,'').toUpperCase()"
class="form-control"> class="form-control">
</div> </div>
@ -177,7 +177,7 @@
<div class="col-md-6 mt-2"> <div class="col-md-6 mt-2">
<label>Bank Name</label> <label>Bank Name</label>
<input type="text" id="bankName" class="form-control" <input type="text" id="bankName" class="form-control"
oninput="this.value = this.value.replace(/[^a-zA-Z\s]/g,'')">
oninput="this.value = this.value.replace(/[^a-zA-Z\s]/g,'').toUpperCase()">
</div> </div>
<div class="col-md-6 mt-2"> <div class="col-md-6 mt-2">
@ -187,7 +187,8 @@
<div class="col-md-6 mt-2"> <div class="col-md-6 mt-2">
<label>Branch</label> <label>Branch</label>
<input type="text" id="branch" class="form-control">
<input type="text" id="branch" class="form-control "
oninput="this.value = this.value.replace(/[^a-zA-Z\s]/g,'').toUpperCase()">
</div> </div>
<div class="col-md-6 mt-2"> <div class="col-md-6 mt-2">
@ -518,7 +519,14 @@
const parkId = $('#park').val(); const parkId = $('#park').val();
if (!parkId) { if (!parkId) {
alert("Please select park");
// alert("Please select park");
Swal.fire({
icon: 'warning',
title: 'Warning',
text: 'Please select park and zone and division',
confirmButtonColor: '#3085d6'
});
return; return;
} }

Loading…
Cancel
Save