FIX_resolved - Email duplication based on ClientBrach vrs reported

This commit is contained in:
venba-Inspriron-3558 2025-10-11 16:05:16 +05:30
parent fbb5abe2eb
commit 6dfdb270a2
3 changed files with 29 additions and 20 deletions

View File

@ -153,11 +153,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]);
} }

View File

@ -214,12 +214,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

@ -207,12 +207,12 @@
<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."
@ -651,11 +651,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;">
@ -945,17 +945,21 @@ function validateInput(input, table, field, submitBtnId){
} }
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
} }
@ -963,7 +967,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
} }
@ -971,21 +976,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);
} }
}, },