MERGE_UAT_SQL_INJECTION_COMPLETED
This commit is contained in:
commit
6b69eb28a7
@ -36,6 +36,12 @@ class Acl
|
||||
'teams' => []
|
||||
],
|
||||
|
||||
// ===================== VIEW INCEPTION PAGE =====================
|
||||
'#^/hrFileList#' => [
|
||||
'roles' => [ ADMIN_ROLE_ID,HEAD_ROLE_ID, MANAGER_ROLE_ID, STAFF_ROLE_ID, ACCOUNT_MANAGER_ROLE_ID],
|
||||
'teams' => []
|
||||
],
|
||||
|
||||
// ===================== USER MANAGEMENT =====================
|
||||
'#^/user#' => [
|
||||
'roles' => [ HEAD_ROLE_ID,ADMIN_ROLE_ID],
|
||||
|
||||
@ -270,6 +270,7 @@ class BDSReportController extends AdminController
|
||||
//Function for get BAP INSURE wise data for premium , policy count , revenue only
|
||||
public function getBAPInsurerData($category = 0, $start_date = null, $end_date = null)
|
||||
{
|
||||
$category = (int)$category;
|
||||
try {
|
||||
$this->myLogger->logme('error', 'getBAPInsurerData function called');
|
||||
$this->myLogger->logme('error', 'category : {data}', ['data' => $category]);
|
||||
@ -429,7 +430,7 @@ class BDSReportController extends AdminController
|
||||
//Function for get BAP CLIENT wise data for premium , policy count , revenue only
|
||||
public function getBAPClientData($category = 0, $start_date = null, $end_date = null)
|
||||
{
|
||||
|
||||
$category = (int)$category;
|
||||
try {
|
||||
$this->myLogger->logme('error', 'getBAPClientData function called');
|
||||
$this->myLogger->logme('error', 'category : {data}', ['data' => $category]);
|
||||
@ -530,7 +531,7 @@ class BDSReportController extends AdminController
|
||||
//Function for get CLIENT wise data for premium and policy count only
|
||||
public function getClientData($category = 0, $start_date = null, $end_date = null)
|
||||
{
|
||||
|
||||
$category = (int)$category;
|
||||
try {
|
||||
|
||||
$this->myLogger->logme('error', 'getClientData function called');
|
||||
|
||||
@ -974,22 +974,28 @@ class ClientController extends AdminController
|
||||
|
||||
$rules = [
|
||||
'entity_type_id' => [
|
||||
'rules' => 'required',
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => [
|
||||
'required' => 'Entity Type is required',
|
||||
'numeric' => 'Invalid Entity Type selected'
|
||||
]
|
||||
],
|
||||
'client_name' => [
|
||||
'rules' => 'required|alpha_space',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9\s_-]+$/]|min_length[2]||max_length[45]',
|
||||
'errors' => [
|
||||
'required' => 'Client Name is required',
|
||||
'alpha_space' => 'Client Name can only contain alphabets and spaces.',
|
||||
'required' => 'Client Name is required',
|
||||
'regex_match' => 'Client Name can only contain letters, numbers, spaces, hyphens(-), and underscores(_).',
|
||||
'min_length' => 'Client Name must be at least 2 characters.',
|
||||
'max_length' => 'Client Name must not exceed 45 characters.',
|
||||
]
|
||||
],
|
||||
'short_name' => [
|
||||
'rules' => 'required',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9_-]+$/]|min_length[2]||max_length[15]',
|
||||
'errors' => [
|
||||
'required' => 'Client Short Name is required',
|
||||
'required' => 'Client Short Name is required',
|
||||
'regex_match' => 'Client Short Name can only contain letters, numbers, hyphens(-), and underscores(_) with no spaces.',
|
||||
'min_length' => 'Client Short Name must be at least 2 characters.',
|
||||
'max_length' => 'Client Short Name must not exceed 15 characters.',
|
||||
]
|
||||
],
|
||||
'pan' => [
|
||||
@ -1145,6 +1151,14 @@ class ClientController extends AdminController
|
||||
$this->myLogger->logme('error', 'Create Client KYC function called');
|
||||
|
||||
$rules = [
|
||||
'other_docs_name' => [
|
||||
'label' => 'Documents Name',
|
||||
'rules' => 'permit_empty|regex_match[/^[a-zA-Z0-9_\- ]+$/]',
|
||||
'errors' => [
|
||||
'regex_match' => 'Document Name can only contain letters, numbers, hyphens, and underscores'
|
||||
]
|
||||
],
|
||||
|
||||
'file_name' => [
|
||||
'rules' => 'uploaded[file_name]|max_size[file_name,5120]|ext_in[file_name,pdf,jpg,jpeg,png]',
|
||||
'errors' => [
|
||||
@ -1508,6 +1522,52 @@ class ClientController extends AdminController
|
||||
|
||||
$this->myLogger->logme('error', 'Client relation function called');
|
||||
|
||||
$rules = [
|
||||
// --- Hidden Fields ---
|
||||
'PrimaryKey' => [
|
||||
'rules' => 'permit_empty|numeric',
|
||||
],
|
||||
'client_id' => [
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => ['required' => 'Client ID is missing.']
|
||||
],
|
||||
|
||||
// --- Account Manager (Array Category) ---
|
||||
// Note the .* which validates every item inside the multiple select array
|
||||
'account_manager' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Please select at least one Account Manager (L1).',
|
||||
]
|
||||
],
|
||||
|
||||
// --- Manager (L2) ---
|
||||
'manager' => [
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => [
|
||||
'required' => 'Please select a Manager (L2).',
|
||||
'numeric' => 'Invalid Manager selection.'
|
||||
]
|
||||
],
|
||||
|
||||
// --- Head ---
|
||||
'head' => [
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => [
|
||||
'required' => 'Please select a Head.',
|
||||
'numeric' => 'Invalid Head selection.'
|
||||
]
|
||||
],
|
||||
];
|
||||
if (!$this->validate($rules)) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'message' => 'Input validation failed',
|
||||
'code' => 400,
|
||||
'errors' => $this->validator->getErrors()
|
||||
]);
|
||||
}
|
||||
|
||||
$data['client_id'] = $this->request->getPost('client_id');
|
||||
$data['created_by'] = get_session_userid();
|
||||
$inserted = false;
|
||||
@ -1542,6 +1602,52 @@ class ClientController extends AdminController
|
||||
public function editClientRelation()
|
||||
{
|
||||
$this->myLogger->logme('error', 'Client relation function called');
|
||||
$rules = [
|
||||
// --- Hidden Fields ---
|
||||
'PrimaryKey' => [
|
||||
'rules' => 'permit_empty|numeric',
|
||||
],
|
||||
|
||||
'client_id' => [
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => ['required' => 'Client ID is missing.']
|
||||
],
|
||||
|
||||
// --- Account Manager (Array Category) ---
|
||||
// Note the .* which validates every item inside the multiple select array
|
||||
'account_manager' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Please select at least one Account Manager (L1).',
|
||||
]
|
||||
],
|
||||
|
||||
// --- Manager (L2) ---
|
||||
'manager' => [
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => [
|
||||
'required' => 'Please select a Manager (L2).',
|
||||
'numeric' => 'Invalid Manager selection.'
|
||||
]
|
||||
],
|
||||
|
||||
// --- Head ---
|
||||
'head' => [
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => [
|
||||
'required' => 'Please select a Head.',
|
||||
'numeric' => 'Invalid Head selection.'
|
||||
]
|
||||
],
|
||||
];
|
||||
if (!$this->validate($rules)) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'message' => 'Input validation failed',
|
||||
'code' => 400,
|
||||
'errors' => $this->validator->getErrors()
|
||||
]);
|
||||
}
|
||||
|
||||
$id = $this->request->getPost('PrimaryKey');
|
||||
$data['client_id'] = $this->request->getPost('client_id');
|
||||
@ -1619,84 +1725,89 @@ class ClientController extends AdminController
|
||||
$this->myLogger->logme('error', 'Client branch CREATE function called');
|
||||
|
||||
$rules = [
|
||||
'branch_name' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Branch Name is required',
|
||||
]
|
||||
],
|
||||
'branch_code' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Branch Code is required',
|
||||
]
|
||||
],
|
||||
'address1' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Address Line 1 is required',
|
||||
]
|
||||
],
|
||||
'state' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'State is required',
|
||||
]
|
||||
],
|
||||
'district' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'District is required.',
|
||||
]
|
||||
],
|
||||
'city' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'City is required.',
|
||||
]
|
||||
],
|
||||
'pincode' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Pincode is required.',
|
||||
]
|
||||
],
|
||||
'gst' => [
|
||||
'rules' => 'required|regex_match[/^\d{2}[A-Z]{5}\d{4}[A-Z]{1}[A-Z\d]{1}Z[A-Z\d]{1}$/]',
|
||||
'errors' => [
|
||||
'required' => 'GST number is required',
|
||||
'regex_match' => 'Invalid GST Number. Example: 12ABCDE1234F5Z6'
|
||||
]
|
||||
],
|
||||
'name.*' => [
|
||||
'rules' => 'required|alpha_space',
|
||||
'errors' => [
|
||||
'required' => 'Contact name is required',
|
||||
'alpha_space' => 'Contact name may contain only letters and spaces'
|
||||
]
|
||||
],
|
||||
'designation.*' => [
|
||||
'rules' => 'required|alpha_space',
|
||||
'errors' => [
|
||||
'required' => 'Designation is required',
|
||||
'alpha_space' => 'Designation may contain only letters and spaces'
|
||||
]
|
||||
],
|
||||
'email.*' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Please enter a valid email address'
|
||||
]
|
||||
],
|
||||
'mobile.*' => [
|
||||
'rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
'required' => 'Mobile number is required',
|
||||
'numeric' => 'Mobile number must contain digits only',
|
||||
'exact_length' => 'Mobile number must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'branch_name' => [
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9\s_-]+$/]|min_length[3]',
|
||||
'errors' => [
|
||||
'required' => 'Branch Name is required',
|
||||
'regex_match' => 'Branch Name can only contain letters, numbers, spaces, hyphens(-), and underscores(_).',
|
||||
]
|
||||
],
|
||||
'branch_code' => [
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Branch Code is required',
|
||||
'regex_match' => 'Branch Code can only contain letters, numbers, hyphens(-), and underscores(_).',
|
||||
]
|
||||
],
|
||||
'address1' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Address Line 1 is required']
|
||||
],
|
||||
'address2' => [
|
||||
'rules' => 'permit_empty|string',
|
||||
],
|
||||
'state' => [
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => ['required' => 'State is required']
|
||||
],
|
||||
'district' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'District is required.']
|
||||
],
|
||||
'city' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'City is required.']
|
||||
],
|
||||
'pincode' => [
|
||||
'rules' => 'required|numeric|exact_length[6]',
|
||||
'errors' => [
|
||||
'required' => 'Pincode is required.',
|
||||
'numeric' => 'Pincode must be numeric',
|
||||
'exact_length' => 'Pincode must be exactly 6 digits'
|
||||
]
|
||||
],
|
||||
'gst' => [
|
||||
'rules' => 'required|regex_match[/^\d{2}[A-Z]{5}\d{4}[A-Z]{1}[A-Z\d]{1}Z[A-Z\d]{1}$/]',
|
||||
'errors' => [
|
||||
'required' => 'GST number is required',
|
||||
'regex_match' => 'Invalid GST Number format.'
|
||||
]
|
||||
],
|
||||
'name.*' => [
|
||||
'rules' => 'required|alpha_space',
|
||||
'errors' => [
|
||||
'required' => 'Contact name is required',
|
||||
'alpha_space' => 'Contact name may contain only letters and spaces'
|
||||
]
|
||||
],
|
||||
'designation.*' => [
|
||||
'rules' => 'required|alpha_space',
|
||||
'errors' => [
|
||||
'required' => 'Designation is required',
|
||||
'alpha_space' => 'Designation may contain only letters and spaces'
|
||||
]
|
||||
],
|
||||
'email.*' => [
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'mobile.*' => [
|
||||
'rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
'required' => 'Mobile number is required',
|
||||
'numeric' => 'Mobile number must contain digits only',
|
||||
'exact_length' => 'Mobile number must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'units.*' => [
|
||||
'rules' => 'permit_empty|numeric' // For the multiple select
|
||||
],
|
||||
'sez' => [
|
||||
'rules' => 'permit_empty' // For the checkbox
|
||||
]
|
||||
];
|
||||
|
||||
if (!$this->validate($rules)) {
|
||||
@ -2072,11 +2183,11 @@ class ClientController extends AdminController
|
||||
]
|
||||
],
|
||||
'email.*' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Please enter a valid email address'
|
||||
]
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'mobile.*' => [
|
||||
'rules' => 'required|numeric|exact_length[10]',
|
||||
@ -2374,6 +2485,92 @@ class ClientController extends AdminController
|
||||
$request_post_data = $this->request->getPost();
|
||||
$sanitized_post_data = sanitizeInputArrayAdvanced($request_post_data);
|
||||
|
||||
$rules = [
|
||||
// --- BASIC SELECTS (Required) ---
|
||||
'client_branch_id' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a Client Branch.']
|
||||
],
|
||||
'policy_type_id' => [
|
||||
'rules' => 'required|is_natural_no_zero',
|
||||
'errors' => [
|
||||
'required' => 'Policy Type is required.',
|
||||
'is_natural_no_zero' => 'Please select a valid Policy Type.'
|
||||
]
|
||||
],
|
||||
'insurer' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Please select an Insurer.']
|
||||
],
|
||||
'tpa' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a TPA.']
|
||||
],
|
||||
|
||||
// --- TEXT FIELDS (Required & Specific Format) ---
|
||||
'policy_no' => [
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9\s_\-\/\\\]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'This field is required.',
|
||||
'regex_match' => 'Only letters, numbers, spaces, _, -, /, and \ are allowed.'
|
||||
]
|
||||
],
|
||||
'gst' => [
|
||||
'rules' => 'required|numeric|greater_than_equal_to[0]|less_than_equal_to[100]',
|
||||
'errors' => [
|
||||
'required' => 'GST percentage is required.',
|
||||
'numeric' => 'GST must be a valid number.',
|
||||
'greater_than_equal_to' => 'GST cannot be negative.',
|
||||
'less_than_equal_to' => 'GST percentage cannot exceed 100%.'
|
||||
]
|
||||
],
|
||||
|
||||
// --- DATE FIELDS (Required) ---
|
||||
'policy_start_date' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Start date is required.',
|
||||
]
|
||||
],
|
||||
'policy_end_date' => [
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'End date is required.',
|
||||
]
|
||||
],
|
||||
|
||||
// --- PERMIT EMPTY FIELDS (Optional) ---
|
||||
'base_policy' => [
|
||||
'rules' => 'permit_empty'
|
||||
],
|
||||
'wellness_plan_id' => [
|
||||
'rules' => 'permit_empty|alpha_numeric',
|
||||
'errors' => [
|
||||
'alpha_numeric' => 'Wellness Plan ID can only contain letters and numbers (no spaces or special characters).'
|
||||
]
|
||||
],
|
||||
'wellness_vendor_id' => [
|
||||
'rules' => 'permit_empty'
|
||||
],
|
||||
'disclaimer' => [
|
||||
'rules' => 'permit_empty|string|min_length[5]',
|
||||
'errors' => ['min_length' => 'Disclaimer should be at least 5 characters long if provided.']
|
||||
],
|
||||
|
||||
// --- CHECKBOXES (Permit Empty) ---
|
||||
'enrolment_visibility' => ['rules' => 'permit_empty'],
|
||||
'is_lgbtq' => ['rules' => 'permit_empty']
|
||||
];
|
||||
|
||||
if (!$this->validate($rules)) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'message' => 'Input validation failed',
|
||||
'code' => 400,
|
||||
'errors' => $this->validator->getErrors()
|
||||
]);
|
||||
}
|
||||
|
||||
$policy_type_id = $sanitized_post_data['policy_type_id'] ?? null;
|
||||
$client_branch_id = $sanitized_post_data['client_branch_id'] ?? null;
|
||||
$client_id = $sanitized_post_data['client_id'] ?? null;
|
||||
@ -2471,6 +2668,94 @@ class ClientController extends AdminController
|
||||
/** here ci4 rules not implemented, because UI screen Fields are hide/show implemented thats why */
|
||||
public function editClientPolicy()
|
||||
{
|
||||
$rules = [
|
||||
// --- BASIC SELECTS (Required) ---
|
||||
'client_branch_id' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a Client Branch.']
|
||||
],
|
||||
'policy_type_id' => [
|
||||
'rules' => 'required|is_natural_no_zero',
|
||||
'errors' => [
|
||||
'required' => 'Policy Type is required.',
|
||||
'is_natural_no_zero' => 'Please select a valid Policy Type.'
|
||||
]
|
||||
],
|
||||
'insurer' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Please select an Insurer.']
|
||||
],
|
||||
'tpa' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a TPA.']
|
||||
],
|
||||
|
||||
// --- TEXT FIELDS (Required & Specific Format) ---
|
||||
'policy_no' => [
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9\s_\-\/\\\]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'This field is required.',
|
||||
'regex_match' => 'Only letters, numbers, spaces, _, -, /, and \ are allowed.'
|
||||
]
|
||||
],
|
||||
'gst' => [
|
||||
'rules' => 'required|numeric|greater_than_equal_to[0]|less_than_equal_to[100]',
|
||||
'errors' => [
|
||||
'required' => 'GST percentage is required.',
|
||||
'numeric' => 'GST must be a valid number.',
|
||||
'greater_than_equal_to' => 'GST cannot be negative.',
|
||||
'less_than_equal_to' => 'GST percentage cannot exceed 100%.'
|
||||
]
|
||||
],
|
||||
|
||||
// --- DATE FIELDS (Required) ---
|
||||
'policy_start_date' => [
|
||||
'rules' => 'required|valid_date',
|
||||
'errors' => [
|
||||
'required' => 'Start date is required.',
|
||||
'valid_date' => 'Enter a valid date format (YYYY-MM-DD).'
|
||||
]
|
||||
],
|
||||
'policy_end_date' => [
|
||||
'rules' => 'required|valid_date',
|
||||
'errors' => [
|
||||
'required' => 'End date is required.',
|
||||
'valid_date' => 'Enter a valid date format (YYYY-MM-DD).'
|
||||
]
|
||||
],
|
||||
|
||||
// --- PERMIT EMPTY FIELDS (Optional) ---
|
||||
'base_policy' => [
|
||||
'rules' => 'permit_empty'
|
||||
],
|
||||
'wellness_plan_id' => [
|
||||
'rules' => 'permit_empty|alpha_numeric',
|
||||
'errors' => [
|
||||
'alpha_numeric' => 'Wellness Plan ID can only contain letters and numbers (no spaces or special characters).'
|
||||
]
|
||||
],
|
||||
'wellness_vendor_id' => [
|
||||
'rules' => 'permit_empty'
|
||||
],
|
||||
'disclaimer' => [
|
||||
'rules' => 'permit_empty|string|min_length[5]',
|
||||
'errors' => ['min_length' => 'Disclaimer should be at least 5 characters long if provided.']
|
||||
],
|
||||
|
||||
// --- CHECKBOXES (Permit Empty) ---
|
||||
'enrolment_visibility' => ['rules' => 'permit_empty'],
|
||||
'is_lgbtq' => ['rules' => 'permit_empty']
|
||||
];
|
||||
|
||||
if (!$this->validate($rules)) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'message' => 'Input validation failed',
|
||||
'code' => 400,
|
||||
'errors' => $this->validator->getErrors()
|
||||
]);
|
||||
}
|
||||
|
||||
$this->myLogger->logme('error', 'Client policy function called');
|
||||
$data = $this->request->getPost();
|
||||
$sanitized_post_data = sanitizeInputArrayAdvanced($data);
|
||||
|
||||
@ -1905,7 +1905,7 @@ class EmployeeController extends AdminController
|
||||
$query = "
|
||||
UPDATE employee_polices
|
||||
SET employee_polices.status = 'truncated', employee_polices.is_active = 0
|
||||
WHERE employee_polices.file_id == :file_id:
|
||||
WHERE employee_polices.file_id = :file_id:
|
||||
";
|
||||
|
||||
$binds = ["file_id" => $file_id];
|
||||
@ -2767,10 +2767,10 @@ class EmployeeController extends AdminController
|
||||
// ]
|
||||
// ],
|
||||
'email_corporate' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Enter a valid email address'
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
'mobile' => [
|
||||
@ -3571,7 +3571,7 @@ class EmployeeController extends AdminController
|
||||
$client_policy_id = $arr['client_policy_id'];
|
||||
// $this->updateWellnessOnboardResponseToDB();die();
|
||||
// echo $client_policy_id;die();
|
||||
$data = $this->employeePolicyModel->select('employee_polices.*,emp.name,emp.relationship,emp.emp_code,emp.name,emp.email_corporate,emp.mobile,emp.dob,cp.policy_no,cp.wellness_plan_id,cp.wellness_vendor_id,cp.policy_start_date as cp_policy_start_date,cp.policy_end_date,cls.short_name')
|
||||
$data = $this->employeePolicyModel->select('employee_polices.*,emp.name,emp.relationship,emp.emp_code,emp.name,emp.gender,emp.email_corporate,emp.mobile,emp.dob,cp.policy_no,cp.wellness_plan_id,cp.wellness_vendor_id,cp.policy_start_date as cp_policy_start_date,cp.policy_end_date,cls.short_name')
|
||||
->join('client_policy cp', 'cp.id = employee_polices.client_policy_id')
|
||||
->join('clients cls', "cp.client_id = cls.id")
|
||||
->join('employees emp', "emp.id = employee_polices.employee_id")
|
||||
@ -3683,7 +3683,7 @@ class EmployeeController extends AdminController
|
||||
foreach ($members as $index => $row) {
|
||||
|
||||
// You don't have gender in data, so put null or default
|
||||
$gender = null; // or "MALE" / "FEMALE" if you infer from somewhere
|
||||
|
||||
|
||||
$payload["memberDetails"][] = [
|
||||
"memberId" => $row["id"], // or custom ID (e.g. employee_id.'-'.$index)
|
||||
@ -3691,7 +3691,7 @@ class EmployeeController extends AdminController
|
||||
"phone" => $row["mobile"],
|
||||
"email" => $row["email_corporate"],
|
||||
"relationshipName" => strtoupper($row["relationship"] ?? ''),
|
||||
"gender" => $gender,
|
||||
"gender" => $row["gender"],
|
||||
"dob" => $row["dob"]
|
||||
];
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result, 'AccountManagerDetails' => isset($AccountManagerDetails[0]) ? $AccountManagerDetails[0] : null], 200);
|
||||
} else {
|
||||
$result = "No Match's";
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $th], 500);
|
||||
@ -206,7 +206,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
||||
} else {
|
||||
$result = "No Match's";
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||
}
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
@ -232,7 +232,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $employee], 200);
|
||||
} else {
|
||||
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $th], 500);
|
||||
@ -261,7 +261,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
||||
} else {
|
||||
$result = "No Matches";
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@ -277,7 +277,7 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($data[0]->client_policy_id);
|
||||
if ($openForEnrollment == false) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'Enrollment closed'], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'Enrollment closed'], 200);
|
||||
}
|
||||
|
||||
if ($data) {
|
||||
@ -326,7 +326,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
||||
} else {
|
||||
$result = "No Matches";
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => $result], 200);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@ -527,7 +527,7 @@ class EmployeeRestController extends AdminController
|
||||
->update();
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200);
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
||||
@ -543,7 +543,7 @@ class EmployeeRestController extends AdminController
|
||||
|
||||
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id);
|
||||
if ($openForEnrollment == false) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'Enrollment closed'], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'Enrollment closed'], 200);
|
||||
}
|
||||
|
||||
foreach ($requestData as $key => $value) {
|
||||
@ -612,7 +612,7 @@ class EmployeeRestController extends AdminController
|
||||
if ($empData) {
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $empData], 200);
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
||||
@ -713,7 +713,7 @@ class EmployeeRestController extends AdminController
|
||||
if ($ClientPolicyData) {
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $result], 200);
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
||||
@ -1054,7 +1054,7 @@ class EmployeeRestController extends AdminController
|
||||
$this->fileModel->where('id', $file_id)->set(['status' => 'success', 'reason' => '', 'error_data' => ''])->update();
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'message' => "Success"], 200);
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!"], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!"], 200);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
||||
@ -1680,7 +1680,7 @@ class EmployeeRestController extends AdminController
|
||||
->where('client_branch_id', $this->request->getGet('client_branch_id'))->findAll();
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => ['client' => $client, 'client_policy' => $clientPolicy]], 200);
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500);
|
||||
@ -3248,7 +3248,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'success', 'code' => 200, 'data' => $feContentData], 200);
|
||||
} else {
|
||||
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'No Data'], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'No Data'], 200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $th], 500);
|
||||
@ -3273,7 +3273,7 @@ class EmployeeRestController extends AdminController
|
||||
// return $this->respond(['status' => 'success', 'code' => 200, 'data' => $data], 200);
|
||||
// } else {
|
||||
|
||||
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'No Data'], 404);
|
||||
// return $this->respond(['status' => 'failed', 'code' => 404, 'data' => 'No Data'], 200);
|
||||
// }
|
||||
// } catch (\Throwable $th) {
|
||||
// return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $th], 500);
|
||||
@ -3359,7 +3359,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => 'failed', 'code' => 400, 'message' => 'Firebase Token is required'], 400);
|
||||
}
|
||||
} else {
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => 'Employee not found'], 404);
|
||||
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => 'Employee not found'], 200);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
log_message('error', 'An error occurred: ' . $th->getMessage());
|
||||
@ -3825,7 +3825,7 @@ class EmployeeRestController extends AdminController
|
||||
return $this->respond(['status' => false, 'code' => 400, 'message' => $message], 200);
|
||||
}
|
||||
} else {
|
||||
return $this->response->setJSON(['status' => false, 'code' => 200, 'message' => 'The employee is not active.'])->setStatusCode(404);
|
||||
return $this->response->setJSON(['status' => false, 'code' => 200, 'message' => 'The employee is not active.'])->setStatusCode(200);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4011,7 +4011,7 @@ class EmployeeRestController extends AdminController
|
||||
'status' => false,
|
||||
'code' => 404,
|
||||
'message' => 'No policy types found'
|
||||
])->setStatusCode(404);
|
||||
])->setStatusCode(200);
|
||||
}
|
||||
|
||||
$this->myLogger->logme('error', "Policy type IDs fetched: " . json_encode($policy_type_ids));
|
||||
@ -4084,7 +4084,7 @@ class EmployeeRestController extends AdminController
|
||||
// dd($emp_id);
|
||||
|
||||
if (empty($emp_id)) {
|
||||
return $this->response->setJSON(['status' => false, 'code' => 200, 'message' => 'emp_id is required.'])->setStatusCode(404);
|
||||
return $this->response->setJSON(['status' => false, 'code' => 200, 'message' => 'emp_id is required.'])->setStatusCode(200);
|
||||
}
|
||||
|
||||
$retail_ticket_data = [];
|
||||
|
||||
@ -121,28 +121,28 @@ class ICICILombardController extends AdminController
|
||||
$body = [
|
||||
"PolicyNumber" => "4016/PPN/A/O/53185987/00/000",
|
||||
"CDBGAccountNumber" => "CD-MUM-0026",
|
||||
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440018",
|
||||
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440021",
|
||||
"MemberDetails" => [
|
||||
[
|
||||
"MemberEmpId" => "EMPID3625562",
|
||||
"MemberEmpId" => "EMPID3625564",
|
||||
"DOJ" => "21-MAR-2019",
|
||||
"InsuredName" => "Jeeva",
|
||||
"DOB" => "7-JUL-1993",
|
||||
"Relationship" => "SELF",
|
||||
"Gender" => "MALE",
|
||||
"DOC" => '19-Nov-2025',
|
||||
"DOC" => '18-Nov-2025',
|
||||
"SumInsured" => "500000",
|
||||
"EmailId" => "Jeeva@GMAIL.COM",
|
||||
"FlagStatus" => "A"
|
||||
],
|
||||
[
|
||||
"MemberEmpId" => "EMPID3625562",
|
||||
"MemberEmpId" => "EMPID3625564",
|
||||
"DOJ" => "21-MAR-2019",
|
||||
"InsuredName" => "Muthu",
|
||||
"DOB" => "8-AUG-1970",
|
||||
"Relationship" => "MOTHER",
|
||||
"Gender" => "FEMALE",
|
||||
"DOC" => '19-Nov-2025',
|
||||
"DOC" => '18-Nov-2025',
|
||||
"EmailId" => "Muthu@GMAIL.COM",
|
||||
"FlagStatus" => "A"
|
||||
],
|
||||
@ -180,8 +180,8 @@ class ICICILombardController extends AdminController
|
||||
|
||||
$body = [
|
||||
"PolicyNumber" => "4016/PPN/A/O/53185987/00/000",
|
||||
"BatchId" => "3725147",
|
||||
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440018"
|
||||
"BatchId" => "3727144",
|
||||
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440021"
|
||||
];
|
||||
|
||||
$response = call_third_party_api($url, 'POST', $headers, $body, true);
|
||||
@ -213,9 +213,9 @@ class ICICILombardController extends AdminController
|
||||
];
|
||||
|
||||
$body = [
|
||||
"PolicyNumber" => "4016/PPN/A/O/53167743/00/000",
|
||||
"PolicyNumber" => "4016/PPN/A/O/53185987/00/000",
|
||||
"IMID" => "201580517901",
|
||||
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440018"
|
||||
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440020"
|
||||
];
|
||||
|
||||
$response = call_third_party_api($url, 'POST', $headers, $body, true);
|
||||
|
||||
@ -379,6 +379,7 @@ class LeadsController extends BaseController
|
||||
private function prepareLeadData()
|
||||
{
|
||||
$rules = [
|
||||
|
||||
'lead_type' => [
|
||||
'rules' => 'integer',
|
||||
'errors' => ['required' => 'Lead Type is required']
|
||||
@ -392,39 +393,65 @@ class LeadsController extends BaseController
|
||||
'errors' => ['required' => 'Entity Type is required']
|
||||
],
|
||||
'client_name' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Client Name is required']
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9_ -]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Client Name is required',
|
||||
'regex_match' => 'Client Name only letters, numbers and characters _ - and space are allowed'
|
||||
]
|
||||
],
|
||||
'client_short_name' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Client Short Name is required']
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
'errors' => ['required' => 'Client Short Name is required','regex_match' => 'Client Short Name only letters, numbers and characters _ and - are allowed']
|
||||
],
|
||||
'gst' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'GST Number is required']
|
||||
],
|
||||
'branch_name' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Branch Name is required']
|
||||
'gst' => [
|
||||
'rules' => 'required|regex_match[/^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$/]',
|
||||
'errors' => [
|
||||
'required' => 'GST Number is required.',
|
||||
'regex_match' => 'Invalid GST format. Example: 22AAAAA0000A1Z5'
|
||||
]
|
||||
],
|
||||
'branch_code' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Branch Code is required']
|
||||
'branch_name' => [
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9\s_-]+$/]|min_length[3]',
|
||||
'errors' => [
|
||||
'required' => 'Branch Name is required.',
|
||||
'regex_match' => 'Branch Name can only contain letters, numbers, spaces, - and _.',
|
||||
'min_length' => 'Branch Name must be at least 3 characters long.'
|
||||
]
|
||||
],
|
||||
'branch_code' => [
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Branch Code is required.',
|
||||
'regex_match' => 'Branch Code can only contain letters, numbers, - and _.'
|
||||
]
|
||||
],
|
||||
'contact_person_name' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Contact Person Name is required']
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9_ -]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Contact Person Name is required',
|
||||
'regex_match' => 'Contact person name only letters, numbers and spaces, - and _.'
|
||||
]
|
||||
],
|
||||
'contact_person_mobile' => [
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'Contact Person Mobile is required']
|
||||
'rules' => 'required|regex_match[/^[0-9]+$/]',
|
||||
'errors' => ['required' => 'Contact Person Mobile is required' ,
|
||||
'regex_match' => 'Contact Person Mobile Only numbers'
|
||||
]
|
||||
],
|
||||
'contact_person_email' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Contact Person Email is required',
|
||||
'valid_email' => 'Please enter a valid email address'
|
||||
'required' => 'Contact Person Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
// 'rules' => 'required|valid_email|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
// 'regex_match' => 'Contact Person Email Only letters, numbers and characters _ - @ . are allowed'
|
||||
|
||||
],
|
||||
'salse_person_id' => [
|
||||
'rules' => 'required',
|
||||
|
||||
@ -403,10 +403,11 @@ class MasterController extends AdminController
|
||||
// Contact Details (Array)
|
||||
// ======================
|
||||
'name.*' => [
|
||||
'rules' => 'required|trim|min_length[2]',
|
||||
'rules' => 'required|trim|min_length[2]|regex_match[/^[a-zA-Z0-9\s_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Contact name is required',
|
||||
'min_length' => 'Contact name must be at least 2 characters'
|
||||
'min_length' => 'Contact name must be at least 2 characters',
|
||||
'regex_match' => 'Contact name is invalid Format'
|
||||
]
|
||||
],
|
||||
|
||||
@ -418,10 +419,10 @@ class MasterController extends AdminController
|
||||
],
|
||||
|
||||
'email.*' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Invalid email format'
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
|
||||
@ -658,10 +659,10 @@ class MasterController extends AdminController
|
||||
],
|
||||
|
||||
'email.*' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Invalid email format'
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
|
||||
@ -1054,10 +1055,10 @@ class MasterController extends AdminController
|
||||
],
|
||||
|
||||
'email.*' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Invalid email format'
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
|
||||
@ -1367,10 +1368,10 @@ class MasterController extends AdminController
|
||||
],
|
||||
|
||||
'email.*' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Invalid email format'
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
|
||||
@ -3518,10 +3519,10 @@ class MasterController extends AdminController
|
||||
]
|
||||
],
|
||||
'email' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Enter a valid email address'
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
'mobile' => [
|
||||
|
||||
@ -1012,11 +1012,11 @@
|
||||
'calc_policy_issue_date.*' => ['label' => 'Policy Issue Date', 'rules' => 'required','errors' => [ 'required' => 'Policy Issue Date is required' ]],
|
||||
'co_share_per.*' => ['label' => 'Co-Share %', 'rules' => 'permit_empty|decimal','errors' => ['decimal' => 'Co-Share % must be a valid decimal.']],
|
||||
'non_comm_per_amt.*' => ['label' => 'Non-Comm Premium', 'rules' => 'permit_empty|decimal','errors' => ['decimal' => 'Amount must be numeric.']],
|
||||
'base_premium.*' => ['label' => 'Base Premium', 'rules' => 'required|numeric|differs[0]','errors' => [
|
||||
'required' => 'Base Premium is required.',
|
||||
'numeric' => 'Base Premium must be a valid number.',
|
||||
'differs' => 'Base Premium cannot be zero; please enter a positive or negative value.'
|
||||
]],
|
||||
'base_premium.*' => ['label' => 'Base Premium', 'rules' => 'permit_empty|regex_match[/^-?\d+(\.\d+)?$/]|differs[0]',
|
||||
'errors' => [
|
||||
'regex_match' => 'Base Premium must be a valid positive or negative number.',
|
||||
'differs' => 'Base Premium cannot be zero.'
|
||||
]],
|
||||
'tp_premium.*' => ['label' => 'TP Premium', 'rules' => 'permit_empty|decimal','errors' => ['decimal' => 'TP Premium must be numeric.']],
|
||||
'ter_premium.*' => ['label' => 'TEP Premium', 'rules' => 'permit_empty|decimal','errors' => ['decimal' => 'TEP Premium must be numeric.']],
|
||||
'co_premium.*' => ['label' => 'Co-Premium', 'rules' => 'permit_empty|decimal','errors'=> ['decimal' => 'Co-Premium must be numeric.']],
|
||||
@ -2482,11 +2482,10 @@
|
||||
],
|
||||
'base_premium.*' => [
|
||||
'label' => 'Base Premium',
|
||||
'rules' => 'required|numeric|differs[0]',
|
||||
'errors' => [
|
||||
'required' => 'Base Premium is required.',
|
||||
'numeric' => 'Base Premium must be a valid number.',
|
||||
'differs' => 'Base Premium cannot be zero; please enter a positive or negative value.'
|
||||
'rules' => 'permit_empty|regex_match[/^-?\d+(\.\d+)?$/]|differs[0]',
|
||||
'errors' => [
|
||||
'regex_match' => 'Base Premium must be a valid positive or negative number.',
|
||||
'differs' => 'Base Premium cannot be zero.'
|
||||
]
|
||||
],
|
||||
'total.*' => [
|
||||
|
||||
@ -89,10 +89,10 @@ class ThzController extends BaseController
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'rules' => 'required|valid_email|max_length[150]',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Please enter a valid email address'
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
|
||||
|
||||
@ -1135,19 +1135,44 @@ class TicketController extends BaseController
|
||||
if ($selected_ticket_type == 1 || $selected_ticket_type == 72) {
|
||||
$rules = [
|
||||
// --- EMPLOYEE DETAILS ---
|
||||
'emp_code' => ['label' => 'Employee Code','rules' => 'required|alpha_numeric_space',
|
||||
'errors' => ['required' => 'Employee Code is required']
|
||||
'emp_code' => [
|
||||
'label' => 'Employee Code',
|
||||
'rules' => 'required|min_length[2]|max_length[20]|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Code is required.',
|
||||
'regex_match' => 'Employee Code cannot contain spaces or special characters (only letters, numbers, - and _ allowed).'
|
||||
]
|
||||
],
|
||||
'emp_name' => ['label' => 'Employee Name','rules' => 'required|min_length[3]',
|
||||
'errors' => ['required' => 'Employee Name is required','min_length' => 'Employee Name must be at least 3 characters long']
|
||||
'emp_name' => [
|
||||
'label' => 'Employee Name',
|
||||
'rules' => 'required|min_length[3]|regex_match[/^[a-zA-Z0-9\s_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Name is required',
|
||||
'min_length' => 'Employee Name must be at least 3 characters long',
|
||||
'regex_match' => 'Employee Name can only contain letters, numbers, spaces, hyphens, and underscores.'
|
||||
]
|
||||
],
|
||||
'insured_name' => ['label' => 'Insured Name','rules' => 'required',
|
||||
'errors' => ['required' => 'Insured Name is required']
|
||||
'insured_name' => [
|
||||
'label' => 'Insured Name',
|
||||
'rules' => 'required|min_length[3]|regex_match[/^[a-zA-Z0-9\s_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Insured Name is required',
|
||||
'min_length' => 'Insured Name must be at least 3 characters long',
|
||||
'regex_match' => 'Insured Name can only contain letters, numbers, spaces, hyphens, and underscores.'
|
||||
]
|
||||
],
|
||||
'relationship' => ['label' => 'Relationship','rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a Relationship']
|
||||
],
|
||||
'policy_no' => ['label' => 'Policy No','rules' => 'permit_empty','errors' => []],
|
||||
'policy_no' => [
|
||||
'label' => 'Policy Number',
|
||||
// Allows: A-Z, a-z, 0-9, spaces (\s), hyphens (\-), underscores (_), and slashes (\/)
|
||||
'rules' => 'permit_empty|min_length[3]|max_length[50]|regex_match[/^[a-zA-Z0-9\s\-\/_]+$/]',
|
||||
'errors' => [
|
||||
'min_length' => 'Policy Number appears too short (min 5 characters).',
|
||||
'regex_match' => 'Policy Number can only contain letters, numbers, spaces, hyphens(-), underscores(_), and slashes(/).'
|
||||
]
|
||||
],
|
||||
'tpa_no' => ['label' => 'TPA ID','rules' => 'permit_empty','errors' => []],
|
||||
'emp_mobile' => ['label' => 'Employee Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
@ -1156,11 +1181,19 @@ class TicketController extends BaseController
|
||||
'exact_length' => 'Mobile must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'emp_mail' => ['label' => 'Employee Mail ID','rules' => 'required|valid_email',
|
||||
'errors' => ['required' => 'Employee Email is required','valid_email' => 'Please provide a valid email address']
|
||||
'emp_mail' => ['label' => 'Employee Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail ID','rules' => 'permit_empty|valid_email',
|
||||
'errors' => ['valid_email' => 'Personal email format is invalid']
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Personal Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'client_policy_id' => ['label' => 'Policy','rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a Policy']
|
||||
@ -1258,15 +1291,20 @@ class TicketController extends BaseController
|
||||
'insurer_id' => ['label' => 'Insurer ID','rules' => 'required',
|
||||
'errors' => ['required' => 'Insurer data is missing. Please re-select the policy.']
|
||||
],
|
||||
'emp_mobile' => ['label' => 'Mobile No','rules' => 'permit_empty|numeric|exact_length[10]',
|
||||
'errors' => ['numeric' => 'Mobile number must contain only digits.',
|
||||
'exact_length' => 'Mobile number must be exactly 10 digits.'
|
||||
'emp_mobile' => ['label' => 'Employee Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
'required' => 'Mobile number is required',
|
||||
'numeric' => 'Mobile must contain only numbers',
|
||||
'exact_length' => 'Mobile must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'emp_mail' => ['label' => 'Mail ID','rules' => 'permit_empty|valid_email',
|
||||
'errors' => ['valid_email' => 'Please provide a valid email address format.']
|
||||
'emp_mail' => ['label' => 'Employee Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
|
||||
// --- CLAIM DETAILS ---
|
||||
'ticket_type_id' => ['label' => 'Policy Type','rules' => 'required','errors' => ['required' => 'Policy Type is required.']],
|
||||
'claim_status_id' => ['label' => 'Status','rules' => 'required','errors' => ['required' => 'Status is required.']],
|
||||
@ -1278,24 +1316,43 @@ class TicketController extends BaseController
|
||||
} else {
|
||||
$rules = [
|
||||
// --- EMPLOYEE DETAILS ---
|
||||
'emp_code' => ['label' => 'Employee ID', 'rules' => 'required',
|
||||
'errors' => ['required' => 'Employee Code is required']
|
||||
'emp_code' => [
|
||||
'label' => 'Employee Code',
|
||||
'rules' => 'required|min_length[2]|max_length[20]|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Code is required.',
|
||||
'regex_match' => 'Employee Code cannot contain spaces or special characters (only letters, numbers, - and _ allowed).',
|
||||
]
|
||||
],
|
||||
'emp_name' => ['label' => 'Employee Name','rules' => 'required|min_length[3]',
|
||||
'errors' => ['required' => 'Employee Name is required','min_length' => 'Employee Name must be at least 3 characters long']
|
||||
'emp_name' => [
|
||||
'label' => 'Employee Name',
|
||||
'rules' => 'required|min_length[3]|regex_match[/^[a-zA-Z0-9\s_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Name is required',
|
||||
'min_length' => 'Employee Name must be at least 3 characters long',
|
||||
'regex_match' => 'Employee Name can only contain letters, numbers, spaces, hyphens, and underscores.'
|
||||
]
|
||||
],
|
||||
'emp_mobile' => ['label' => 'Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'emp_mobile' => ['label' => 'Employee Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
'required' => 'Mobile number is required',
|
||||
'numeric' => 'Mobile must be digits only',
|
||||
'numeric' => 'Mobile must contain only numbers',
|
||||
'exact_length' => 'Mobile must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'emp_mail' => ['label' => 'Mail ID','rules' => 'required|valid_email',
|
||||
'errors' => ['required' => 'Official email is required','valid_email' => 'Please provide a valid official email']
|
||||
'emp_mail' => ['label' => 'Employee Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail','rules' => 'permit_empty|valid_email',
|
||||
'errors' => ['valid_email' => 'Personal email format is invalid']
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Personal Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'client_policy_id' => ['label' => 'Policy','rules' => 'required','errors' => ['required' => 'Please select a Policy']],
|
||||
'acm_id' => ['label' => 'Account Manager','rules' => 'required','errors' => ['required' => 'Account Manager must be selected']],
|
||||
@ -1399,19 +1456,44 @@ class TicketController extends BaseController
|
||||
if ($selected_ticket_type == 1 || $selected_ticket_type == 72) {
|
||||
$rules = [
|
||||
// --- EMPLOYEE DETAILS ---
|
||||
'emp_code' => ['label' => 'Employee Code','rules' => 'required|alpha_numeric_space',
|
||||
'errors' => ['required' => 'Employee Code is required']
|
||||
'emp_code' => [
|
||||
'label' => 'Employee Code',
|
||||
'rules' => 'required|min_length[2]|max_length[20]|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Code is required.',
|
||||
'regex_match' => 'Employee Code cannot contain spaces or special characters (only letters, numbers, - and _ allowed).',
|
||||
]
|
||||
],
|
||||
'emp_name' => ['label' => 'Employee Name','rules' => 'required|min_length[3]',
|
||||
'errors' => ['required' => 'Employee Name is required','min_length' => 'Employee Name must be at least 3 characters long']
|
||||
'emp_name' => [
|
||||
'label' => 'Employee Name',
|
||||
'rules' => 'required|min_length[3]|regex_match[/^[a-zA-Z0-9\s_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Name is required',
|
||||
'min_length' => 'Employee Name must be at least 3 characters long',
|
||||
'regex_match' => 'Employee Name can only contain letters, numbers, spaces, hyphens, and underscores.'
|
||||
]
|
||||
],
|
||||
'insured_name' => ['label' => 'Insured Name','rules' => 'required',
|
||||
'errors' => ['required' => 'Insured Name is required']
|
||||
'insured_name' => [
|
||||
'label' => 'Insured Name',
|
||||
'rules' => 'required|min_length[3]|regex_match[/^[a-zA-Z0-9\s_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Insured Name is required',
|
||||
'min_length' => 'Insured Name must be at least 3 characters long',
|
||||
'regex_match' => 'Insured Name can only contain letters, numbers, spaces, hyphens, and underscores.'
|
||||
]
|
||||
],
|
||||
'relationship' => ['label' => 'Relationship','rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a Relationship']
|
||||
],
|
||||
'policy_no' => ['label' => 'Policy No','rules' => 'permit_empty','errors' => []],
|
||||
'policy_no' => [
|
||||
'label' => 'Policy Number',
|
||||
// Allows: A-Z, a-z, 0-9, spaces (\s), hyphens (\-), underscores (_), and slashes (\/)
|
||||
'rules' => 'permit_empty|min_length[3]|max_length[50]|regex_match[/^[a-zA-Z0-9\s\-\/_]+$/]',
|
||||
'errors' => [
|
||||
'min_length' => 'Policy Number appears too short (min 5 characters).',
|
||||
'regex_match' => 'Policy Number can only contain letters, numbers, spaces, hyphens(-), underscores(_), and slashes(/).'
|
||||
]
|
||||
],
|
||||
'tpa_no' => ['label' => 'TPA ID','rules' => 'permit_empty','errors' => []],
|
||||
'emp_mobile' => ['label' => 'Employee Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
@ -1420,11 +1502,19 @@ class TicketController extends BaseController
|
||||
'exact_length' => 'Mobile must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'emp_mail' => ['label' => 'Employee Mail ID','rules' => 'required|valid_email',
|
||||
'errors' => ['required' => 'Employee Email is required','valid_email' => 'Please provide a valid email address']
|
||||
'emp_mail' => ['label' => 'Employee Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail ID','rules' => 'permit_empty|valid_email',
|
||||
'errors' => ['valid_email' => 'Personal email format is invalid']
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Personal Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'client_policy_id' => ['label' => 'Policy','rules' => 'required',
|
||||
'errors' => ['required' => 'Please select a Policy']
|
||||
@ -1522,15 +1612,20 @@ class TicketController extends BaseController
|
||||
'insurer_id' => ['label' => 'Insurer ID','rules' => 'required',
|
||||
'errors' => ['required' => 'Insurer data is missing. Please re-select the policy.']
|
||||
],
|
||||
'emp_mobile' => ['label' => 'Mobile No','rules' => 'permit_empty|numeric|exact_length[10]',
|
||||
'errors' => ['numeric' => 'Mobile number must contain only digits.',
|
||||
'exact_length' => 'Mobile number must be exactly 10 digits.'
|
||||
'emp_mobile' => ['label' => 'Employee Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
'required' => 'Mobile number is required',
|
||||
'numeric' => 'Mobile must contain only numbers',
|
||||
'exact_length' => 'Mobile must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'emp_mail' => ['label' => 'Mail ID','rules' => 'permit_empty|valid_email',
|
||||
'errors' => ['valid_email' => 'Please provide a valid email address format.']
|
||||
'emp_mail' => ['label' => 'Employee Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
|
||||
// --- CLAIM DETAILS ---
|
||||
'ticket_type_id' => ['label' => 'Policy Type','rules' => 'required','errors' => ['required' => 'Policy Type is required.']],
|
||||
'claim_status_id' => ['label' => 'Status','rules' => 'required','errors' => ['required' => 'Status is required.']],
|
||||
@ -1542,24 +1637,43 @@ class TicketController extends BaseController
|
||||
} else {
|
||||
$rules = [
|
||||
// --- EMPLOYEE DETAILS ---
|
||||
'emp_code' => ['label' => 'Employee ID', 'rules' => 'required',
|
||||
'errors' => ['required' => 'Employee Code is required']
|
||||
'emp_code' => [
|
||||
'label' => 'Employee Code',
|
||||
'rules' => 'required|min_length[2]|max_length[20]|regex_match[/^[a-zA-Z0-9_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Code is required.',
|
||||
'regex_match' => 'Employee Code cannot contain spaces or special characters (only letters, numbers, - and _ allowed).',
|
||||
]
|
||||
],
|
||||
'emp_name' => ['label' => 'Employee Name','rules' => 'required|min_length[3]',
|
||||
'errors' => ['required' => 'Employee Name is required','min_length' => 'Employee Name must be at least 3 characters long']
|
||||
'emp_name' => [
|
||||
'label' => 'Employee Name',
|
||||
'rules' => 'required|min_length[3]|regex_match[/^[a-zA-Z0-9\s_-]+$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Name is required',
|
||||
'min_length' => 'Employee Name must be at least 3 characters long',
|
||||
'regex_match' => 'Employee Name can only contain letters, numbers, spaces, hyphens, and underscores.'
|
||||
]
|
||||
],
|
||||
'emp_mobile' => ['label' => 'Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'emp_mobile' => ['label' => 'Employee Mobile No','rules' => 'required|numeric|exact_length[10]',
|
||||
'errors' => [
|
||||
'required' => 'Mobile number is required',
|
||||
'numeric' => 'Mobile must be digits only',
|
||||
'numeric' => 'Mobile must contain only numbers',
|
||||
'exact_length' => 'Mobile must be exactly 10 digits'
|
||||
]
|
||||
],
|
||||
'emp_mail' => ['label' => 'Mail ID','rules' => 'required|valid_email',
|
||||
'errors' => ['required' => 'Official email is required','valid_email' => 'Please provide a valid official email']
|
||||
'emp_mail' => ['label' => 'Employee Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Employee Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail','rules' => 'permit_empty|valid_email',
|
||||
'errors' => ['valid_email' => 'Personal email format is invalid']
|
||||
'emp_personal_mail' => ['label' => 'Personal Mail ID',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Personal Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@domain.com).'
|
||||
]
|
||||
],
|
||||
'client_policy_id' => ['label' => 'Policy','rules' => 'required','errors' => ['required' => 'Please select a Policy']],
|
||||
'acm_id' => ['label' => 'Account Manager','rules' => 'required','errors' => ['required' => 'Account Manager must be selected']],
|
||||
@ -1813,8 +1927,11 @@ class TicketController extends BaseController
|
||||
$rules = [
|
||||
'emp_mail' => [
|
||||
'label' => 'To',
|
||||
'rules' => 'required|valid_email',
|
||||
'errors' => ['required' => 'Recipient email is missing.','valid_email' => 'Please provide a valid email address for the recipient.']
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
'mail_subject' => [
|
||||
'label' => 'Subject',
|
||||
@ -1823,11 +1940,6 @@ class TicketController extends BaseController
|
||||
'required' => 'Please enter a Subject for the mail.',
|
||||
'min_length' => 'Subject should be at least 5 characters long.'
|
||||
]
|
||||
],
|
||||
'content' => [
|
||||
'label' => 'Mail Content',
|
||||
'rules' => 'required',
|
||||
'errors' => ['required' => 'You cannot send an empty mail.']
|
||||
]
|
||||
];
|
||||
|
||||
@ -3509,6 +3621,160 @@ class TicketController extends BaseController
|
||||
|
||||
// -------- END CLAIM DUMP UPLOAD ----------------------------------------------------------------------------------------------
|
||||
public function saveIRDocsJson()
|
||||
{
|
||||
// -----------------------------------------------------
|
||||
// 1) GET INPUT
|
||||
// -----------------------------------------------------
|
||||
$request_data = $this->request->getPost();
|
||||
$data = sanitizeInputArrayAdvanced($request_data);
|
||||
|
||||
$ticket_id = $data['ticket_id'] ?? '';
|
||||
$required_docs = $data['required_docs'] ?? '';
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 2) BASIC VALIDATION (CI4)
|
||||
// -----------------------------------------------------
|
||||
$rules = [
|
||||
'ticket_id' => [
|
||||
'label' => 'Ticket ID',
|
||||
'rules' => 'required|numeric',
|
||||
'errors' => [
|
||||
'required' => 'System could not identify the Number.',
|
||||
'numeric' => 'Invalid format.'
|
||||
]
|
||||
],
|
||||
|
||||
'required_docs' => [
|
||||
'label' => 'Required Documents',
|
||||
'rules' => 'required',
|
||||
'errors' => [
|
||||
'required' => 'Document data is required'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
if (!$this->validate($rules)) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'message' => 'Input validation failed',
|
||||
'code' => 400,
|
||||
'errors' => $this->validator->getErrors()
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 3) VALIDATE JSON FORMAT
|
||||
// -----------------------------------------------------
|
||||
$docsArray = json_decode($required_docs, true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'message' => 'Input validation failed',
|
||||
'code' => 400,
|
||||
'errors' => [
|
||||
'required_docs' => 'Invalid JSON format'
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 4) VALIDATE JSON STRUCTURE
|
||||
// -----------------------------------------------------
|
||||
if (!isset($docsArray['docs']) || !is_array($docsArray['docs'])) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'message' => 'Input validation failed',
|
||||
'code' => 400,
|
||||
'errors' => [
|
||||
'required_docs' => 'Invalid document structure'
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 5) VALIDATE EACH DOCUMENT NAME
|
||||
// -----------------------------------------------------
|
||||
foreach ($docsArray['docs'] as $index => $doc) {
|
||||
|
||||
// Check document_name exists
|
||||
if (!isset($doc['document_name'])) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'code' => 400,
|
||||
'message' => 'Input validation failed',
|
||||
'errors' => [
|
||||
'required_docs' =>
|
||||
"Document name missing at row " . ($index + 1)
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
// YOUR REQUIRED REGEX RULE
|
||||
if (!preg_match('/^[a-zA-Z0-9_\- ]+$/', $doc['document_name'])) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'code' => 400,
|
||||
'message' => 'Input validation failed',
|
||||
'errors' => [
|
||||
'required_docs' =>
|
||||
"Document name '{$doc['document_name']}' can only contain letters, numbers, hyphens and underscores"
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
// Check document_received exists
|
||||
if (!array_key_exists('document_received', $doc)) {
|
||||
return $this->response->setStatusCode(400)->setJSON([
|
||||
'status' => false,
|
||||
'code' => 400,
|
||||
'message' => 'Input validation failed',
|
||||
'errors' => [
|
||||
'required_docs' =>
|
||||
"document_received key missing at row " . ($index + 1)
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 6) EXTRA SAFETY CHECKS
|
||||
// -----------------------------------------------------
|
||||
if (empty($ticket_id) || empty($required_docs)) {
|
||||
return $this->respond([
|
||||
'status' => false,
|
||||
'code' => 404,
|
||||
'message' => 'Failed to save Docs'
|
||||
], 200);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 7) UPDATE DATABASE
|
||||
// -----------------------------------------------------
|
||||
db_connect()->query(
|
||||
"UPDATE ticket_master SET required_docs = ? WHERE id = ?",
|
||||
[$required_docs, $ticket_id]
|
||||
);
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 8) RETURN UPDATED DATA
|
||||
// -----------------------------------------------------
|
||||
$saved = $this->ticketMasterModel
|
||||
->select('required_docs')
|
||||
->where('id', $ticket_id)
|
||||
->first();
|
||||
|
||||
$savedDocs = json_decode($saved['required_docs'] ?? '{}', true) ?? [];
|
||||
|
||||
return $this->respond([
|
||||
'status' => true,
|
||||
'code' => 200,
|
||||
'message' => 'IR docs saved successfully',
|
||||
'data' => $savedDocs
|
||||
], 200);
|
||||
}
|
||||
|
||||
public function saveIRDocsJson_old()
|
||||
{
|
||||
$request_data = $this->request->getPost();
|
||||
$data = sanitizeInputArrayAdvanced($request_data);
|
||||
|
||||
@ -139,10 +139,10 @@ class UserController extends AdminController
|
||||
// Email
|
||||
// ======================
|
||||
'email' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Please enter a valid email address',
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
|
||||
@ -323,10 +323,10 @@ class UserController extends AdminController
|
||||
// Email
|
||||
// ======================
|
||||
'email' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Please enter a valid email address',
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
|
||||
@ -829,10 +829,10 @@ class UserController extends AdminController
|
||||
// Email
|
||||
// ======================
|
||||
'email' => [
|
||||
'rules' => 'required|valid_email',
|
||||
'rules' => 'required|regex_match[/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/]',
|
||||
'errors' => [
|
||||
'required' => 'Email is required',
|
||||
'valid_email' => 'Please enter a valid email address',
|
||||
'required' => 'Email address is required.',
|
||||
'regex_match' => 'Please enter a valid email format (e.g., name@company.com).'
|
||||
]
|
||||
],
|
||||
// ======================
|
||||
|
||||
@ -836,9 +836,9 @@ class VidalApiController extends BaseController
|
||||
// log_message('error', "✅ Match found: emp_code={$row['empNo']} policy={$row['policyNumber']}");
|
||||
|
||||
$sql = "UPDATE employee_polices
|
||||
SET tpa_id = ?
|
||||
WHERE id = ?";
|
||||
$this->db->query($sql, [$row['enrollmentId'], $policy_data['emp_policy_id']]);
|
||||
SET tpa_id = :tpa_id:,
|
||||
WHERE id = :emp_policy_id:";
|
||||
$this->db->query($sql, ["tpa_id"=>$row['enrollmentId'], "emp_policy_id"=>$policy_data['emp_policy_id']]);
|
||||
|
||||
// for e-card send
|
||||
if(strtolower(trim($policy_data['relationship'])) == 'self'){
|
||||
|
||||
@ -1114,9 +1114,9 @@ class EmployeePolicyModel extends Model
|
||||
public function getDeletionEmployeeDataForExportExcel($ref_data, $return_type = 0)
|
||||
{
|
||||
|
||||
$client_id = $ref_data['client_id'];
|
||||
$client_policy_id = $ref_data['client_policy_id'];
|
||||
$client_branch_id = $ref_data['client_branch_id'];
|
||||
$client_id = (string) "'".$ref_data['client_id']."'";
|
||||
$client_policy_id = (string) "'".$ref_data['client_policy_id']."'";
|
||||
$client_branch_id = (string) "'".$ref_data['client_branch_id']."'";
|
||||
$insurer_or_tpa = $ref_data['insurer_or_tpa'];
|
||||
|
||||
$get_insurer_id_from_client_policy = $this->db->table('client_policy')
|
||||
@ -1929,6 +1929,8 @@ class EmployeePolicyModel extends Model
|
||||
public function getDeletionDataForTruncated($file_id)
|
||||
{
|
||||
|
||||
$file_id = (int)$file_id;
|
||||
|
||||
// Fetch the necessary details in a single query using JOINs
|
||||
$result = $this->db->table('files f')
|
||||
->select('i.deletion_add_day')
|
||||
@ -2064,6 +2066,8 @@ class EmployeePolicyModel extends Model
|
||||
$action = "da";
|
||||
}
|
||||
|
||||
$file_id = (int)$file_id;
|
||||
|
||||
$query = $this->db->query("
|
||||
|
||||
SELECT
|
||||
@ -2086,6 +2090,7 @@ class EmployeePolicyModel extends Model
|
||||
// dd($this->db->getLastQuery(), $result);
|
||||
// dd($result);
|
||||
|
||||
|
||||
return $result[0];
|
||||
|
||||
}
|
||||
@ -2096,6 +2101,8 @@ class EmployeePolicyModel extends Model
|
||||
log_message('error', 'updateEmployeePolicyTruncateReverse model function called');
|
||||
log_message('error', 'FILE ID : {data}', ['data' => $file_id]);
|
||||
|
||||
$file_id = (int)$file_id;
|
||||
|
||||
$this->db->query("
|
||||
UPDATE employee_polices
|
||||
SET
|
||||
@ -2137,6 +2144,9 @@ class EmployeePolicyModel extends Model
|
||||
//calculate the CD Transaction sum of the amount for the inception, addition, dependent addition, missed inception
|
||||
public function calculateCdTranctionAmount($file_id)
|
||||
{
|
||||
|
||||
$file_id = (int)$file_id;
|
||||
|
||||
$query = $this->db->query("
|
||||
|
||||
SELECT
|
||||
|
||||
@ -73,6 +73,6 @@ class MessageModel extends Model
|
||||
|
||||
$query = $builder->get();
|
||||
return $query->getResult();
|
||||
dd($this->db->getLastQuery());
|
||||
// dd($this->db->getLastQuery());
|
||||
}
|
||||
}
|
||||
|
||||
@ -2432,6 +2432,9 @@
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//not in use function due to complexity of query and union, so writing raw query with bindings to avoid sql injection
|
||||
public function getBDSReportListSingleUnion($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $client_branch_id = 0, $insurer_branch_id = 0, $client_policy_id = 0, $user_id = 0, $where = [])
|
||||
{
|
||||
|
||||
@ -3015,6 +3018,15 @@
|
||||
|
||||
public function getBDSReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $client_branch_id = 0, $insurer_branch_id = 0, $client_policy_id = 0, $user_id = 0, $where = [])
|
||||
{
|
||||
$client_id = (int)$client_id;
|
||||
$insurer_id = (int)$insurer_id;
|
||||
$policy_type_id = (int)$policy_type_id;
|
||||
$client_branch_id = (int)$client_branch_id;
|
||||
$insurer_branch_id = (int)$insurer_branch_id;
|
||||
$client_policy_id = (int)$client_policy_id;
|
||||
$user_id = (int)$user_id;
|
||||
$issuer = (int)$issuer;
|
||||
|
||||
$whereAdded = false;
|
||||
$statement_month_condition = '';
|
||||
if ($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) {
|
||||
@ -3689,6 +3701,8 @@
|
||||
";
|
||||
$query = $this->db->query($sql);
|
||||
$result = $query->getResultArray();
|
||||
|
||||
|
||||
// $countofalldata = count($result);
|
||||
// dd($result);
|
||||
// dd($this->db->getLastQuery()->getQuery());
|
||||
|
||||
@ -664,9 +664,13 @@ class TicketMasterModel extends Model
|
||||
|
||||
// Execute the query
|
||||
$binds = ["start_date"=>$start_date,"end_date"=>$end_date];
|
||||
// Merge policy_type binds if present
|
||||
if (!empty($statusBinds)) {
|
||||
$binds = array_merge($binds, $statusBinds);
|
||||
}
|
||||
$result = $this->db->query($sql, $binds)->getResultArray();
|
||||
|
||||
// print_rr($result);die();
|
||||
// print_rr(count(($result)));
|
||||
// print_rr($this->db->lastQuery);die();
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -729,8 +733,13 @@ class TicketMasterModel extends Model
|
||||
";
|
||||
|
||||
$binds = ["start_date"=>$start_date,"end_date"=>$end_date];
|
||||
// Merge policy_type binds if present
|
||||
if (!empty($statusBinds)) {
|
||||
$binds = array_merge($binds, $statusBinds);
|
||||
}
|
||||
$result = $this->db->query($sql,$binds)->getResultArray();
|
||||
|
||||
// print_rr(count(($result)));
|
||||
// print_rr($this->db->lastQuery);die();
|
||||
return $result;
|
||||
} else {
|
||||
$ticket_type_data_1 = "";
|
||||
@ -804,8 +813,13 @@ class TicketMasterModel extends Model
|
||||
|
||||
$binds = ["start_date"=>$start_date,"end_date"=>$end_date];
|
||||
// Execute the query
|
||||
$result = $this->db->query($sql,$binds)->getResultArray();
|
||||
// Merge policy_type binds if present
|
||||
if (!empty($statusBinds)) {
|
||||
$binds = array_merge($binds, $statusBinds);
|
||||
}
|
||||
|
||||
$result = $this->db->query($sql,$binds)->getResultArray();
|
||||
// print_rr($this->db->lastQuery);die();
|
||||
return $result;
|
||||
|
||||
|
||||
|
||||
@ -165,7 +165,32 @@
|
||||
console.error(status, error);
|
||||
$('.loader').fadeOut();
|
||||
$('.loader-mask').delay(350).fadeOut('slow');
|
||||
toastr.warning('Something Wrong!', 'Warning');
|
||||
if (xhr.status === 400) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
let errorMessages = "";
|
||||
let seenMessages = []; // Array to store unique messages
|
||||
if (response.errors) {
|
||||
$.each(response.errors, function (field, message) {
|
||||
if (!seenMessages.includes(message)) {
|
||||
errorMessages += `• ${message}<br>`;
|
||||
seenMessages.push(message); // Mark this message as "seen"
|
||||
}
|
||||
});
|
||||
toastr.error(errorMessages, 'Validation Error', { "allowHtml": true });
|
||||
} else {
|
||||
toastr.warning(response.message || 'Validation failed', 'Warning');
|
||||
}
|
||||
} else if (xhr.status === 403) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
toastr.error(response.message, 'Security Policy');
|
||||
} else if (xhr.status === 404) {
|
||||
toastr.warning('Resource not found', 'Warning');
|
||||
} else if (xhr.status === 500) {
|
||||
toastr.error('Something went wrong . Please try again later.', 'Server Error');
|
||||
} else {
|
||||
toastr.error('An unexpected error occurred. Please try again later.', 'Error');
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -221,7 +246,31 @@
|
||||
console.error(status, error);
|
||||
$('.loader').fadeOut();
|
||||
$('.loader-mask').delay(350).fadeOut('slow');
|
||||
toastr.warning('Something Wrong!', 'Warning');
|
||||
if (xhr.status === 400) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
let errorMessages = "";
|
||||
let seenMessages = []; // Array to store unique messages
|
||||
if (response.errors) {
|
||||
$.each(response.errors, function (field, message) {
|
||||
if (!seenMessages.includes(message)) {
|
||||
errorMessages += `• ${message}<br>`;
|
||||
seenMessages.push(message); // Mark this message as "seen"
|
||||
}
|
||||
});
|
||||
toastr.error(errorMessages, 'Validation Error', { "allowHtml": true });
|
||||
} else {
|
||||
toastr.warning(response.message || 'Validation failed', 'Warning');
|
||||
}
|
||||
} else if (xhr.status === 403) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
toastr.error(response.message, 'Security Policy');
|
||||
} else if (xhr.status === 404) {
|
||||
toastr.warning('Resource not found', 'Warning');
|
||||
} else if (xhr.status === 500) {
|
||||
toastr.error('Something went wrong . Please try again later.', 'Server Error');
|
||||
} else {
|
||||
toastr.error('An unexpected error occurred. Please try again later.', 'Error');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -158,7 +158,33 @@ $(document).ready(function(){
|
||||
setTimeout(function() {
|
||||
$('.loader').fadeOut();
|
||||
$('.loader-mask').delay(350).fadeOut('slow');
|
||||
console.log('Something Wrong!', 'warning'); }, 1000);
|
||||
if (xhr.status === 400) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
let errorMessages = "";
|
||||
let seenMessages = []; // Array to store unique messages
|
||||
if (response.errors) {
|
||||
$.each(response.errors, function (field, message) {
|
||||
if (!seenMessages.includes(message)) {
|
||||
errorMessages += `• ${message}<br>`;
|
||||
seenMessages.push(message); // Mark this message as "seen"
|
||||
}
|
||||
});
|
||||
toastr.error(errorMessages, 'Validation Error', { "allowHtml": true });
|
||||
} else {
|
||||
toastr.warning(response.message || 'Validation failed', 'Warning');
|
||||
}
|
||||
} else if (xhr.status === 403) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
toastr.error(response.message, 'Security Policy');
|
||||
} else if (xhr.status === 404) {
|
||||
toastr.warning('Resource not found', 'Warning');
|
||||
} else if (xhr.status === 500) {
|
||||
toastr.error('Something went wrong . Please try again later.', 'Server Error');
|
||||
} else {
|
||||
toastr.error('An unexpected error occurred. Please try again later.', 'Error');
|
||||
}
|
||||
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -88,7 +88,31 @@ $(document).ready(function () {
|
||||
setTimeout(function() {
|
||||
$('.loader').fadeOut();
|
||||
$('.loader-mask').delay(350).fadeOut('slow');
|
||||
toastr.warning('Something Wrong!', 'Warning');
|
||||
if (xhr.status === 400) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
let errorMessages = "";
|
||||
let seenMessages = []; // Array to store unique messages
|
||||
if (response.errors) {
|
||||
$.each(response.errors, function (field, message) {
|
||||
if (!seenMessages.includes(message)) {
|
||||
errorMessages += `• ${message}<br>`;
|
||||
seenMessages.push(message); // Mark this message as "seen"
|
||||
}
|
||||
});
|
||||
toastr.error(errorMessages, 'Validation Error', { "allowHtml": true });
|
||||
} else {
|
||||
toastr.warning(response.message || 'Validation failed', 'Warning');
|
||||
}
|
||||
} else if (xhr.status === 403) {
|
||||
let response = JSON.parse(xhr.responseText);
|
||||
toastr.error(response.message, 'Security Policy');
|
||||
} else if (xhr.status === 404) {
|
||||
toastr.warning('Resource not found', 'Warning');
|
||||
} else if (xhr.status === 500) {
|
||||
toastr.error('Something went wrong . Please try again later.', 'Server Error');
|
||||
} else {
|
||||
toastr.error('An unexpected error occurred. Please try again later.', 'Error');
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user