From 33ace21f99d43656481f5b8e57ac76a6426a0c16 Mon Sep 17 00:00:00 2001 From: vadivelJ96 Date: Tue, 28 Oct 2025 16:24:14 +0530 Subject: [PATCH] CHANGE__Default_mail_template__By__VADIVEL_J__2025-10-28_16:23 --- app/Config/Routes.php | 1 + app/Controllers/ClientController.php | 73 +++++++ app/Controllers/TestingController.php | 275 ++++++++++++++++++-------- 3 files changed, 270 insertions(+), 79 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index a0d62ffb..a685eb1f 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -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'); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 948ccbff..2549d0ae 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -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; + + + } + diff --git a/app/Controllers/TestingController.php b/app/Controllers/TestingController.php index a7cdddd1..98257f4e 100644 --- a/app/Controllers/TestingController.php +++ b/app/Controllers/TestingController.php @@ -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); + } + + + }