Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev

This commit is contained in:
vadivelJ96 2025-10-11 18:20:09 +05:30
commit 64164573c1
5 changed files with 41 additions and 24 deletions

View File

@ -527,6 +527,7 @@ $routes->post("employeeRest/updateMpin", "RestAuthenticationController::updateMp
$routes->post("employeeRest/getPostEmployeeDataForAuth", "RestAuthenticationController::getPostEmployeeDataForAuth"); $routes->post("employeeRest/getPostEmployeeDataForAuth", "RestAuthenticationController::getPostEmployeeDataForAuth");
// $routes->post("logHrActivity", "RestAuthenticationController::logHrActivity"); // $routes->post("logHrActivity", "RestAuthenticationController::logHrActivity");
$routes->get("employeeRest/getClientDetails", "EmployeeRestController::getClientDetails");
$routes->group("employeeRest", ["filter" => "authJWT"], function ($routes) { $routes->group("employeeRest", ["filter" => "authJWT"], function ($routes) {
@ -551,7 +552,7 @@ $routes->group("employeeRest", ["filter" => "authJWT"], function ($routes) {
$routes->get("deleteDependence", "EmployeeRestController::deleteDependence"); $routes->get("deleteDependence", "EmployeeRestController::deleteDependence");
$routes->get("getEmployeeAndDependenceByClientId", "EmployeeRestController::getEmployeeAndDependenceByClientId"); $routes->get("getEmployeeAndDependenceByClientId", "EmployeeRestController::getEmployeeAndDependenceByClientId");
$routes->get("getClientPolicy", "EmployeeRestController::getClientPolicy"); $routes->get("getClientPolicy", "EmployeeRestController::getClientPolicy");
$routes->get("getClientDetails", "EmployeeRestController::getClientDetails");
$routes->get("getAddOnPolicy", "EmployeeRestController::getAddOnPolicy"); $routes->get("getAddOnPolicy", "EmployeeRestController::getAddOnPolicy");
$routes->post("iAgreeForAddOn", "EmployeeRestController::iAgreeForAddOn"); $routes->post("iAgreeForAddOn", "EmployeeRestController::iAgreeForAddOn");

View File

@ -134,11 +134,11 @@ class ClientController extends AdminController
public function validateDuplicateByClientBranch() public function validateDuplicateByClientBranch()
{ {
$request = service('request'); $value = $this->request->getPost('value');
$value = $request->getPost('value'); $clientId = $this->request->getPost('client_id');
$clientId = $request->getPost('client_id'); $branchId = $this->request->getPost('branch_id');
$branchId = $request->getPost('branch_id'); $field = $this->request->getPost('field');
$isDuplicate = $this->clientModel->isDuplicateByClientBranch($value, $clientId, $branchId); $isDuplicate = $this->clientModel->isDuplicateByClientBranch($value, $field, $clientId, $branchId);
return $this->response->setJSON(['isDuplicate' => $isDuplicate]); return $this->response->setJSON(['isDuplicate' => $isDuplicate]);
} }
public function checkDuplicateTableFieldValue() public function checkDuplicateTableFieldValue()

View File

@ -226,12 +226,12 @@ class ClientModel extends Model
return $result; return $result;
} }
public function isDuplicateByClientBranch($email, $clientId, $branchId) public function isDuplicateByClientBranch($value, $field, $clientId, $branchId)
{ {
$builder = $this->db->table('level_contacts lc') $builder = $this->db->table('level_contacts lc')
->select('lc.id') ->select('lc.id')
->join('client_branch cb', 'lc.ref_id = cb.id', 'left') ->join('client_branch cb', 'lc.ref_id = cb.id', 'left')
->where('lc.email', $email) ->where('lc.'.$field, $value)
->where('lc.contact_type', 'client') ->where('lc.contact_type', 'client')
->where('cb.client_id', $clientId) ->where('cb.client_id', $clientId)
->where('lc.ref_id', $branchId) ->where('lc.ref_id', $branchId)

View File

@ -198,12 +198,13 @@
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<label for="last_name">Email<span class="text-danger">*</span></label> <label for="last_name">Email<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Contact Email" <input value="" type="text" class="form-control" placeholder="Enter Contact Email"
name="email[]" id="email" data-parsley-trigger="change" data-parsley-type="email" onkeyup="validateDuplicateByClientBranch(this, 'branchBtnSubmit')" required> name="email[]" id="email" data-parsley-trigger="change" data-parsley-type="email" onchange="validateDuplicateByClientBranch(this, 'email','branchBtnSubmit')" required>
</div> </div>
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<label for="mobile">Mobile<span class="text-danger">*</span></label> <label for="mobile">Mobile<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Contact Mobile" <input value="" type="text" class="form-control" placeholder="Enter Contact Mobile"
name="mobile[]" id="mobile" onkeyup="validateInput(this, 'level_contacts', 'mobile', 'branchBtnSubmit')" name="mobile[]" id="mobile"
onchange="validateDuplicateByClientBranch(this, 'mobile','branchBtnSubmit')"
onkeypress="return onlyNumbers(event)" maxlength="10" minlength="10" onkeypress="return onlyNumbers(event)" maxlength="10" minlength="10"
data-parsley-type-message="Please enter a valid 10-digit mobile number." data-parsley-type-message="Please enter a valid 10-digit mobile number."
data-parsley-required-message="Please enter a valid 10-digit mobile number." data-parsley-required-message="Please enter a valid 10-digit mobile number."
@ -304,6 +305,8 @@ $('#btnBranchAdd').click(function() {
$('#branch_form')[0].reset(); $('#branch_form')[0].reset();
$('#branch_form').parsley().reset(); $('#branch_form').parsley().reset();
$('#pre_branch_id').val(''); $('#pre_branch_id').val('');
$('#branch_id_primarykey').val('');
$('.ac').css('display', 'block'); $('.ac').css('display', 'block');
contactCount = 1 contactCount = 1
@ -370,13 +373,14 @@ $("#branch_form").submit(function(event) {
var selectedValues = $("#selected").val(); var selectedValues = $("#selected").val();
console.log(selectedValues, selectedValues); console.log(selectedValues, selectedValues);
console.log("branch_id_primarykey", $('#branch_id_primarykey').val());
let level_contect_data = getContactsData(); let level_contect_data = getContactsData();
console.log('level_contect_data', level_contect_data); console.log('level_contect_data', level_contect_data);
event.preventDefault(); event.preventDefault();
branch_PrimaryKey = $('#client_id_branch').val(); branch_PrimaryKey = $('#client_id_branch').val();
console.log('branch_PrimaryKey', branch_PrimaryKey) console.log('branch_PrimaryKey', branch_PrimaryKey)
if (branch_PrimaryKey === '') { if (branch_PrimaryKey === '') {
@ -649,11 +653,11 @@ function appendContactHtml(contact = false, reset = false) {
<div class="form-row"> <div class="form-row">
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<label for="${uniqueId}_last_name">Email<span class="text-danger">*</span></label> <label for="${uniqueId}_last_name">Email<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.email : ''}" type="text" class="form-control" placeholder="Enter Contact Email" name="email[]" id="${uniqueId}_email" data-parsley-trigger="change" data-parsley-type="email" onkeyup="validateDuplicateByClientBranch(this, 'branchBtnSubmit')" required> <input value="${contact !== undefined && contact !== false ? contact.email : ''}" type="text" class="form-control" placeholder="Enter Contact Email" name="email[]" id="${uniqueId}_email" data-parsley-trigger="change" data-parsley-type="email" onchange="validateDuplicateByClientBranch(this, 'email', 'branchBtnSubmit')" required>
</div> </div>
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<label for="${uniqueId}_mobile">Mobile<span class="text-danger">*</span></label> <label for="${uniqueId}_mobile">Mobile<span class="text-danger">*</span></label>
<input value="${contact !== undefined && contact !== false ? contact.mobile : ''}" type="text" class="form-control" placeholder="Enter Contact Mobile" name="mobile[]" id="${uniqueId}_mobile" onkeyup="validateInput(this, 'level_contacts', 'mobile', 'branchBtnSubmit')" onkeypress = "return onlyNumbers(event)" maxlength="10" min="10" data-parsley-type-message="Please enter a valid 10-digit mobile number." data-parsley-required-message="Please enter a valid 10-digit mobile number." required> <input value="${contact !== undefined && contact !== false ? contact.mobile : ''}" type="text" class="form-control" placeholder="Enter Contact Mobile" name="mobile[]" id="${uniqueId}_mobile" onchange="validateDuplicateByClientBranch(this, 'mobile', 'branchBtnSubmit')" onkeypress = "return onlyNumbers(event)" maxlength="10" min="10" data-parsley-type-message="Please enter a valid 10-digit mobile number." data-parsley-required-message="Please enter a valid 10-digit mobile number." required>
</div> </div>
</div> </div>
<div class="form-group" style="display: flex;"> <div class="form-group" style="display: flex;">
@ -972,17 +976,23 @@ function validateInput(input, table, field, submitButId){
} }
function validateDuplicateByClientBranch(input, submitButId) {
function validateDuplicateByClientBranch(input, field, submitButId) {
let value = $(input).val().trim(); let value = $(input).val().trim();
let clientId = $('#client_id_branch').val(); let clientId = $('#client_id_branch').val();
let branchId = $('#branch_id_primarykey').val(); let branchId = $('#branch_id_primarykey').val();
console.log(`Ln968 cId: ${clientId} | bId: ${branchId}`); let label = $(input).closest('.form-group').find('label').text().replace('*', '').trim();
let message = label ? label + " is duplicate!" : "Value is duplicate!";
console.log(`cId: ${clientId} | bId: ${branchId}`);
// Don't forgot be careful // Don't forgot be careful
// 1 Local duplication check (User entered) // 1 Local duplication check (User entered)
let isLocalDuplicate = false; let isLocalDuplicate = false;
$('input[name="email[]"]').each(function() { $('input[name="' + field + '[]"]').each(function(index) {
if (this !== input && $(this).val().trim() === value && value !== '') { console.log(`Entered value: ${value} | Contact ${index+1} value: ${$(this).val()}`);
if (this !== input && $(this).val().trim() === value) {
isLocalDuplicate = true; isLocalDuplicate = true;
return false; // break loop return false; // break loop
} }
@ -990,7 +1000,8 @@ function validateDuplicateByClientBranch(input, submitButId) {
if (isLocalDuplicate) { if (isLocalDuplicate) {
console.log(`r u n Local`); console.log(`r u n Local`);
toastr.warning("Email is duplicate!", 'WARNING'); console.log(`btn Dis - true`);
toastr.warning(message, 'WARNING');
$('#' + submitButId).prop('disabled', true); $('#' + submitButId).prop('disabled', true);
return; // dont call server if duplicate in UI return; // dont call server if duplicate in UI
} }
@ -998,21 +1009,25 @@ function validateDuplicateByClientBranch(input, submitButId) {
// Don't forgot be careful // Don't forgot be careful
// 2 Server-side duplicate check (DB) // 2 Server-side duplicate check (DB)
if (!isLocalDuplicate && value !== '') { if (!isLocalDuplicate && value !== '') {
console.log(`r u n Server`);
$.ajax({ $.ajax({
url: '<?= base_url("client/others/check-duplicate") ?>', url: '<?= base_url("client/others/check-duplicate") ?>',
type: 'POST', type: 'POST',
data: { data: {
client_id: clientId, client_id: clientId,
branch_id: branchId, branch_id: branchId,
value: value value: value,
field: field
}, },
dataType: 'json', dataType: 'json',
success: function(response) { success: function(response) {
if (response.isDuplicate) { if (response.isDuplicate) {
toastr.warning("Email already exists!", 'WARNING'); console.log(`r u n Server`);
console.log(`btn Dis - true`);
toastr.warning(message, 'WARNING');
$('#' + submitButId).prop('disabled', true); $('#' + submitButId).prop('disabled', true);
} else { } else {
console.log(`btn Dis - false`);
$('#' + submitButId).prop('disabled', false); $('#' + submitButId).prop('disabled', false);
} }
}, },

View File

@ -71,11 +71,12 @@
<label for="gender">Gender<span class="text-danger">*</span></label> <label for="gender">Gender<span class="text-danger">*</span></label>
<select class="form-control" id="gender" name="gender[]"> <select class="form-control" id="gender" name="gender[]">
<option value="">Select Gender</option> <option value="">Select Gender</option>
<option value="Female" <?= htmlspecialchars(isset($value['gender']) && $value['gender'] == "" ? 'selected' : "Female" ) ?> >Female</option> <option value="Female" <?= (isset($value['gender']) && $value['gender'] == 'Female') ? 'selected' : '' ?>>Female</option>
<option value="Male" <?= htmlspecialchars(isset($value['gender']) && $value['gender'] == "" ? 'selected' : "Male" ) ?> >Male</option> <option value="Male" <?= (isset($value['gender']) && $value['gender'] == 'Male') ? 'selected' : '' ?>>Male</option>
</select> </select>
</div> </div>
<div class="form-group col-md-2"> <div class="form-group col-md-2">
<label for="designation">Designation <span class="text-danger">*</span></label> <label for="designation">Designation <span class="text-danger">*</span></label>
<input type="text" class="form-control" id="designation" name="designation[]" value="<?= htmlspecialchars(isset($value['designation']) ? $value['designation'] : '-' ) ?>"> <input type="text" class="form-control" id="designation" name="designation[]" value="<?= htmlspecialchars(isset($value['designation']) ? $value['designation'] : '-' ) ?>">