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

This commit is contained in:
VENKATESHWARAN 2025-10-28 18:02:41 +05:30
commit 618e210035
3 changed files with 270 additions and 79 deletions

View File

@ -719,6 +719,7 @@ $routes->group('test', function($routes) {
$routes->get('membervalidation', 'TestingController::membervalidation');
$routes->get('generateExcel', 'TestingController::generateExcel');
$routes->get('logo_renaming','TestingController::logo_renaming');
// $routes->get('createDefaultMailTempalteInDB','TestingController::createDefaultMailTempalteInDB');
});
$routes->cli('cli/testcli', 'TestingController::testcli');

View File

@ -869,6 +869,12 @@ class ClientController extends AdminController
if ($insert) {
$client_data = $this->clientModel->where(['id' => $insert, 'is_active' => 1])->first();
$client_id = $insert;
$default_template_creation = $this->createDefaultMailTemplate($client_id , $client_data);
if($default_template_creation == false){
$this->myLogger->logme('error', 'Default Mail Template Creation Failed for Client ID: {data}', ['data' => $client_id]);
}
return $this->respond(['status' => true, 'code' => 200, 'data' => $client_data], 200);
} else {
return $this->respond(['status' => false, 'code' => 404, 'message' => 'no data found'], 200);
@ -7732,9 +7738,76 @@ class ClientController extends AdminController
return true;
}
public function createDefaultMailTemplate($client_id , $client_data){
$member_welcome_mail_template = $this->notificationModel->where('client_id',NULL)->where('template_name','member_welcome_mail')->get()->getResultArray()[0]??[];
$member_remainder_mail_template = $this->notificationModel->where('client_id',NULL)->where('template_name','member_reminder_mail')->get()->getResultArray()[0]??[];
$member_review_and_summary_mail_template = $this->notificationModel->where('client_id',NULL)->where('template_name','member_review_and_summary_mail')->get()->getResultArray()[0]??[];
$default_member_welcome_mail_template = [
'client_id' => $client_id,
'template_name' => 'member_welcome_mail',
'subject' => $member_welcome_mail_template['subject']??'',
'mail_content' => $member_welcome_mail_template['mail_content']??'',
'mail_content_json'=> $member_welcome_mail_template['mail_content_json']??'',
'created_by' => get_session_userid(),
'created_at' => date('Y-m-d H:i:s'),
'updated_by' => null,
'updated_at' => date('Y-m-d H:i:s'),
'mail_content_copy'=> null
];
$default_member_remainder_mail_template = [
'client_id' => $client_id,
'template_name' => 'member_reminder_mail',
'subject' => $member_remainder_mail_template['subject']??'',
'mail_content' => $member_remainder_mail_template['mail_content']??'',
'mail_content_json'=> $member_remainder_mail_template['mail_content_json']??'',
'created_by' => get_session_userid(),
'created_at' => date('Y-m-d H:i:s'),
'updated_by' => null,
'updated_at' => date('Y-m-d H:i:s'),
'mail_content_copy'=> null
];
$default_member_review_and_summary_mail_template = [
'client_id' => $client_id,
'template_name' => 'member_review_and_summary_mail',
'subject' => $member_review_and_summary_mail_template['subject']??'',
'mail_content' => $member_review_and_summary_mail_template['mail_content']??'',
'mail_content_json'=> $member_review_and_summary_mail_template['mail_content_json']??'',
'created_by' => get_session_userid(),
'created_at' => date('Y-m-d H:i:s'),
'updated_by' => null,
'updated_at' => date('Y-m-d H:i:s'),
'mail_content_copy'=> null
];
$this->myLogger->logme('error', 'Default Mail Template Data ' . json_encode([
$default_member_welcome_mail_template,
$default_member_remainder_mail_template,
$default_member_review_and_summary_mail_template
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$default_templates_inserted = $this->notificationModel->insertBatch([
$default_member_welcome_mail_template,
$default_member_remainder_mail_template,
$default_member_review_and_summary_mail_template
]);
return $default_templates_inserted ? true : false;
}

View File

@ -362,18 +362,18 @@ class TestingController extends BaseController
$pre_clients_list = $this->getNonDuplicatePreClients();
$log_post_clients_list = $post_clients_list ;
$log_post_clients_list = $post_clients_list;
$log_pre_clients_list = $pre_clients_list ;
$log_pre_clients_list = $pre_clients_list;
log_message('error', 'Post Clients to be processed: ' . count($log_post_clients_list));
log_message('error', 'Pre Clients to be processed: ' . count($log_pre_clients_list));
$matched_Count = 0 ;
$matched_Count = 0;
$expected_match_count = min(count($post_clients_list), count($pre_clients_list));
if (
!empty($pre_clients_list) &&
@ -444,31 +444,27 @@ class TestingController extends BaseController
}
}
log_message('error', 'Expected Match Count : ' . $expected_match_count);
log_message('error', 'Total Matched Count: ' . $matched_Count);
log_message('error', 'Total UnMatched Count: ' . $expected_match_count - $matched_Count);
log_message('error','unmatched_reocrds');
log_message('error', 'unmatched_reocrds');
$log_post_clients_list = array_values($log_post_clients_list);
$log_pre_clients_list = array_values($log_pre_clients_list);
if( (count($log_pre_clients_list) < count($log_post_clients_list))){
log_message('error',"unmatched records count from pre- ". count($log_pre_clients_list));
log_message('error',print_r($log_pre_clients_list,true));
if ((count($log_pre_clients_list) < count($log_post_clients_list))) {
log_message('error', "unmatched records count from pre- " . count($log_pre_clients_list));
log_message('error', print_r($log_pre_clients_list, true));
} else {
log_message('error',"unmatched records count from post - ".count($log_post_clients_list));
log_message('error',print_r($log_post_clients_list,true));
log_message('error', "unmatched records count from post - " . count($log_post_clients_list));
log_message('error', print_r($log_post_clients_list, true));
}
}
}
return $this->response->setJSON(['status' => 'success', 'message' => 'Client and Branch mapping completed.'])->setStatusCode(200);
}
@ -535,7 +531,7 @@ class TestingController extends BaseController
return $results;
}
public function membervalidation($lead_id = 329)
{
{
$lead_controll = new LeadsController();
// $lead_controll->getMemberDataExcelFileErrors();
$res = $lead_controll->memberDataListExcelFileFormatValidation(['lead_id' => $lead_id]);
@ -543,18 +539,81 @@ class TestingController extends BaseController
}
private $firstNames = [
'Rajesh', 'Priya', 'Amit', 'Sneha', 'Vikram', 'Anjali', 'Rahul', 'Deepika',
'Sanjay', 'Kavita', 'Arun', 'Pooja', 'Manoj', 'Nisha', 'Suresh', 'Meera',
'Karthik', 'Divya', 'Ravi', 'Lakshmi', 'Anand', 'Swathi', 'Vijay', 'Rekha',
'Ashok', 'Sangeetha', 'Prakash', 'Uma', 'Ramesh', 'Vani', 'Kumar', 'Radha',
'Dinesh', 'Shanti', 'Ganesh', 'Parvati', 'Mohan', 'Sita', 'Arjun', 'Geetha'
'Rajesh',
'Priya',
'Amit',
'Sneha',
'Vikram',
'Anjali',
'Rahul',
'Deepika',
'Sanjay',
'Kavita',
'Arun',
'Pooja',
'Manoj',
'Nisha',
'Suresh',
'Meera',
'Karthik',
'Divya',
'Ravi',
'Lakshmi',
'Anand',
'Swathi',
'Vijay',
'Rekha',
'Ashok',
'Sangeetha',
'Prakash',
'Uma',
'Ramesh',
'Vani',
'Kumar',
'Radha',
'Dinesh',
'Shanti',
'Ganesh',
'Parvati',
'Mohan',
'Sita',
'Arjun',
'Geetha'
];
private $lastNames = [
'Kumar', 'Sharma', 'Singh', 'Patel', 'Reddy', 'Nair', 'Iyer', 'Krishnan',
'Rao', 'Gupta', 'Verma', 'Agarwal', 'Joshi', 'Mehta', 'Desai', 'Pillai',
'Menon', 'Bhat', 'Naidu', 'Varma', 'Malhotra', 'Kapoor', 'Chopra', 'Saxena',
'Pandey', 'Mishra', 'Tiwari', 'Dubey', 'Sinha', 'Jain', 'Shah', 'Thakur'
'Kumar',
'Sharma',
'Singh',
'Patel',
'Reddy',
'Nair',
'Iyer',
'Krishnan',
'Rao',
'Gupta',
'Verma',
'Agarwal',
'Joshi',
'Mehta',
'Desai',
'Pillai',
'Menon',
'Bhat',
'Naidu',
'Varma',
'Malhotra',
'Kapoor',
'Chopra',
'Saxena',
'Pandey',
'Mishra',
'Tiwari',
'Dubey',
'Sinha',
'Jain',
'Shah',
'Thakur'
];
private $relationships = ['Self', 'Spouse', 'Son', 'Daughter', 'Father', 'Mother'];
@ -611,9 +670,9 @@ class TestingController extends BaseController
for ($i = 1; $i <= $totalRecords; $i++) {
$row = $i + 1; // Start from row 2 (row 1 is header)
$record = $this->generateSampleRecord($i);
$sheet->setCellValue('A' . $row, $record['sl_no']);
$sheet->setCellValue('B' . $row, $record['emp_code']);
$sheet->setCellValue('C' . $row, $record['name']);
@ -664,33 +723,33 @@ class TestingController extends BaseController
$firstName = $this->firstNames[array_rand($this->firstNames)];
$lastName = $this->lastNames[array_rand($this->lastNames)];
$name = $firstName . ' ' . $lastName;
$relationship = $this->relationships[array_rand($this->relationships)];
$gender = $this->genders[array_rand($this->genders)];
// Generate random age between 18 and 65
$age = rand(18, 65);
// Calculate DOB based on age
$year = date('Y') - $age;
$month = str_pad(rand(1, 12), 2, '0', STR_PAD_LEFT);
$day = str_pad(rand(1, 28), 2, '0', STR_PAD_LEFT);
$dob = "{$day}-{$month}-{$year}";
// Generate employee code
$empCode = 'EMP' . str_pad($index, 6, '0', STR_PAD_LEFT);
// Generate email
$email = strtolower($firstName . '.' . $lastName . $index) . '@' . $this->domains[array_rand($this->domains)];
// Generate mobile number (Indian format)
$mobile = '+91' . rand(7000000000, 9999999999);
// Generate insurance amounts
$siOptions = [100000, 200000, 300000, 500000, 1000000];
$si = $siOptions[array_rand($siOptions)];
$si_enhancement = rand(0, 1) ? rand(50000, 200000) : 0;
$proposed_si_1 = $si + rand(100000, 500000);
$proposed_si_2 = $proposed_si_1 + rand(100000, 500000);
$proposed_si_3 = $proposed_si_2 + rand(100000, 500000);
@ -716,64 +775,67 @@ class TestingController extends BaseController
}
public function logo_renaming(){
$directory = ROOTPATH . 'public/uploads/logo/';
public function logo_renaming()
{
if (!is_dir($directory)) {
die("Directory not found: $directory");
$directory = ROOTPATH . 'public/uploads/logo/';
if (!is_dir($directory)) {
die("Directory not found: $directory");
}
$files = scandir($directory);
$client_logo_files = $this->get_client_logo_files();
$rename_files = "";
$failed_rename_files = "";
foreach ($files as $file) {
// Skip system entries
if ($file === '.' || $file === '..') {
continue;
}
$files = scandir($directory);
$client_logo_files = $this->get_client_logo_files();
$oldPath = $directory . $file;
$rename_files = "";
$failed_rename_files = "";
if (is_file($oldPath) && in_array(trim($file), $client_logo_files)) {
foreach ($files as $file) {
// Skip system entries
if ($file === '.' || $file === '..' ) {
continue;
}
// Remove all spaces from filename
$newFileName = preg_replace('/\s+|\x{00A0}|\x{200B}|\x{200C}|\x{200D}|\x{FEFF}/u', '', $file);
$oldPath = $directory . $file;
$newPath = $directory . $newFileName;
if (is_file($oldPath) && in_array(trim($file) , $client_logo_files)) {
// Remove all spaces from filename
$newFileName = preg_replace('/\s+|\x{00A0}|\x{200B}|\x{200C}|\x{200D}|\x{FEFF}/u', '', $file);
$newPath = $directory . $newFileName;
// Only rename if the name changed
if ($oldPath !== $newPath) {
if (rename($oldPath, $newPath)) {
$rename_files .= "\n Renamed: $file$newFileName \n";
} else {
$failed_rename_files .= "\n Failed file: $file \n";
}
// Only rename if the name changed
if ($oldPath !== $newPath) {
if (rename($oldPath, $newPath)) {
$rename_files .= "\n Renamed: $file$newFileName \n";
} else {
$failed_rename_files .= "\n Failed file: $file \n";
}
}
}
}
$dbUpdated = $this->update_client_logo_files();
$dbUpdated = $this->update_client_logo_files();
log_message('error', 'Renamed Files: ' . $rename_files);
log_message('error', 'Failed Renames: ' . $failed_rename_files);
log_message('error', 'Database Update Status: ' . ($dbUpdated ? 'Success' : 'No changes made'));
log_message('error', 'Renamed Files: ' . $rename_files);
log_message('error', 'Failed Renames: ' . $failed_rename_files);
log_message('error', 'Database Update Status: ' . ($dbUpdated ? 'Success' : 'No changes made'));
return $this->response->setJSON(['status' => 'success',
return $this->response->setJSON([
'status' => 'success',
'message' => 'Logo renaming completed. kindly check backend logs for details',
'data' => [
'renamed_files' => $rename_files,
'failed_renames' => $failed_rename_files
]
])->setStatusCode(200);
])->setStatusCode(200);
}
public function get_client_logo_files(){
public function get_client_logo_files()
{
$db = \Config\Database::connect();
@ -783,14 +845,15 @@ class TestingController extends BaseController
$results = $query->getResultArray() ?? [];
$files = array_map(function($item) {
$files = array_map(function ($item) {
return trim($item['client_logo']);
}, $results);
return $files;
}
public function update_client_logo_files(){
public function update_client_logo_files()
{
$db = \Config\Database::connect();
@ -803,9 +866,63 @@ class TestingController extends BaseController
$query = $db->query($sql);
return $db->affectedRows() > 0;
}
public function createDefaultMailTempalteInDB()
{
$postDB = \Config\Database::connect(); // target DB
$preDB = \Config\Database::connect('preDB'); // source DB
// Templates to copy
$templateNames = [
'member_welcome_mail',
'member_reminder_mail',
'member_review_and_summary_mail'
];
foreach ($templateNames as $template) {
$exists = $postDB->table('notifications')
->where('client_id', NULL)
->where('template_name', $template)
->countAllResults();
if ($exists > 0) {
continue; // Skip if already inserted
}
// Fetch template from preDB
$templateData = $preDB->table('notifications')
->where('client_id', NULL)
->where('template_name', $template)
->get()
->getRowArray();
if (!empty($templateData)) {
// Remove ID to avoid duplicate primary key issues
unset($templateData['id']);
// Set created_by and timestamps if needed
$templateData['client_id'] = NULL;
$templateData['created_by'] = 1;
$templateData['cretaed_at'] = date('Y-m-d H:i:s');
$templateData['updated_by'] = NULL;
$templateData['updated_at'] = NULL;
// Insert into postDB
$postDB->table('notifications')->insert($templateData);
}
}
return $this->response->setJSON(['message'=>"Created Default Mail Tempalte In DB "])->setStatusCode(200);
}
}