From a4972a250c37d06a2384d7c0bcdace39ec9f5f8e Mon Sep 17 00:00:00 2001 From: vadivelJ96 Date: Mon, 4 Aug 2025 14:56:54 +0530 Subject: [PATCH 1/2] All CHANGES- claims related changes Except UI - Vadivel j 2025-08-04 --- app/Config/Routes.php | 4 +- app/Controllers/TicketController.php | 119 ++++++- app/Models/ClaimFilesModel.php | 55 +++ app/Models/TicketMasterModel.php | 25 ++ app/Views/claim_files_upload.php | 329 ++++++++++++++++++ app/Views/ticket_edit_onbording.php | 20 ++ app/Views/ticket_list.php | 28 +- app/Views/view_policy_terms.php | 97 ++++++ .../assets/images/action_on_policies_sb.png | Bin 0 -> 1098 bytes public/assets/images/app_content_mng_sb.png | Bin 0 -> 22099 bytes public/assets/images/claims_sb.png | Bin 0 -> 2060 bytes public/assets/images/clients_sb.png | Bin 0 -> 16027 bytes public/assets/images/leads_sb.png | Bin 0 -> 11134 bytes public/assets/images/masters_sb.png | Bin 0 -> 14127 bytes .../assets/images/policy_transactions_sb.png | Bin 0 -> 18790 bytes public/assets/images/user_manual_sb.png | Bin 0 -> 15548 bytes 16 files changed, 666 insertions(+), 11 deletions(-) create mode 100644 app/Models/ClaimFilesModel.php create mode 100644 app/Views/claim_files_upload.php create mode 100644 app/Views/view_policy_terms.php create mode 100644 public/assets/images/action_on_policies_sb.png create mode 100644 public/assets/images/app_content_mng_sb.png create mode 100644 public/assets/images/claims_sb.png create mode 100644 public/assets/images/clients_sb.png create mode 100644 public/assets/images/leads_sb.png create mode 100644 public/assets/images/masters_sb.png create mode 100644 public/assets/images/policy_transactions_sb.png create mode 100644 public/assets/images/user_manual_sb.png diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 6e3e0e30..cc9ea843 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -589,7 +589,9 @@ $routes->group("/ticket", ["filter" => "authMVC"], function ($routes) { $routes->post("getPoliciesbyEmpID","TicketController::getPoliciesbyEmpID"); $routes->post("getMoreInfo","TicketController::getMoreInfo"); $routes->get("getMoreInfo","TicketController::getMoreInfo"); -// $routes->post('ticket_messages','TicketController::getTicketMessage'); + $routes->post('upload_url',"TicketController::upload_url"); + $routes->post('getUrlDataByTicketId',"TicketController::getUrlDataByTicketId"); + $routes->get('remove_url',"TicketController::remove_url"); }); $routes->group("clientApi",["filter" => "AuthClientApi"], function ($routes){ diff --git a/app/Controllers/TicketController.php b/app/Controllers/TicketController.php index 91ec3aae..68122d7a 100644 --- a/app/Controllers/TicketController.php +++ b/app/Controllers/TicketController.php @@ -20,6 +20,7 @@ use App\Models\EmployeePolicyModel; use App\Models\InsurerModel; use App\Models\EmployeeModel; use App\Models\TPAModel; +use App\Models\ClaimFilesModel; use DOMDocument; use Psr\Log\LoggerInterface; @@ -56,6 +57,7 @@ class TicketController extends BaseController protected $extraFieldsDisplayForFrontend; protected $insurerModel; protected $TPAModel; + protected $claimFilesModel; public function __construct() { @@ -300,6 +302,7 @@ class TicketController extends BaseController $this->employeePolicyModel = new EmployeePolicyModel(); $this->insurerModel = new InsurerModel(); $this->TPAModel = new TPAModel(); + $this->claimFilesModel = new ClaimFilesModel(); } public function ticketList() @@ -784,8 +787,12 @@ class TicketController extends BaseController // dd($data); $data['ticket_data'] = $ticket_data; $data['acms'] = $this->employeeModel->getAcmUsingClientID($ticket_data['client_id']); + + $raw_json = $this->ticketMasterModel->getPolicyTermsJson($ticket_id) ; + + $decoded_top = json_decode($raw_json ?? "", true) ?? []; + $data['policy_terms'] = $this->recursive_json_decode($decoded_top); - // dd($data); return $this->loadLayout('ticket_edit_onbording', $data); } @@ -2080,7 +2087,117 @@ class TicketController extends BaseController $date = \DateTime::createFromFormat($format, $value); return $date && $date->format($format) === $value; } + + public function upload_url(){ + + $data = $this->request->getPost(); + + $insertArr = []; + + foreach ($data['docs_name'] as $key => $eachData) { + + if (!empty($eachData) ) { + + $insertData = [ + 'doc_name' => $data['docs_name'][$key]??'', + 'url' => $data['url'][$key]??'', + 'ticket_id'=> $data['ticket_id_url']??'', + 'created_by' => get_session_userid(), + 'is_active' => 1 + ]; + + $insertArr[] = $insertData; + + } + } + + if(!empty($insertArr)){ + // Insert into database + $insert = $this->claimFilesModel->insertBatch($insertArr); + } + + + if (isset($insert) && !empty($insert)) { + return $this->respond(['status' => true, 'message' => 'File uploaded successfully ']); + } else { + return $this->respond(['status' => false, 'message' => 'Failed to upload file ']); + } + } + + public function getUrlDataByTicketId() + { + $ticket_id = $this->request->getPost('ticket_id'); + + if (!$ticket_id) { + return $this->response->setJSON([ + 'status' => false, + 'message' => 'Ticket ID is required', + 'data' => [] + ]); + } + + $urlData = $this->claimFilesModel + ->where('ticket_id', $ticket_id) + ->where('is_active',1) + ->findAll(); + + return $this->response->setJSON([ + 'status' => true, + 'data' => $urlData + ]); + } + + public function remove_url() + { + $id = $this->request->getGet('id'); + + if (empty(trim($id))) { + return $this->response->setJSON([ + 'status' => false, + 'message' => 'Invalid ID' + ]); + } + + $updated = $this->claimFilesModel + ->where('id', $id) + ->set(['is_active' => 0]) + ->update(); + + if ($updated) { + return $this->response->setJSON([ + 'status' => true, + 'message' => 'URL successfully marked inactive.' + ]); + } else { + return $this->response->setJSON([ + 'status' => false, + 'message' => 'Failed to update record.' + ]); + } + } + + public function recursive_json_decode($input) { + if (is_string($input)) { + $decoded = json_decode($input, true); + if (json_last_error() === JSON_ERROR_NONE) { + return $this->recursive_json_decode($decoded); // continue decoding recursively + } else { + return $input; + } + } + + if (is_array($input)) { + foreach ($input as $key => $value) { + $input[$key] = $this->recursive_json_decode($value); + } + } + + return $input; + } + + + } diff --git a/app/Models/ClaimFilesModel.php b/app/Models/ClaimFilesModel.php new file mode 100644 index 00000000..2a5ec138 --- /dev/null +++ b/app/Models/ClaimFilesModel.php @@ -0,0 +1,55 @@ + $ticketIdsString ]; } + + public function getPolicyTermsJson($ticket_id) + { + $sql = " SELECT cp.policy_terms + FROM ticket_master tm + JOIN client_policy cp ON cp.id = tm.client_policy_id + WHERE tm.id = ? + AND tm.is_active = 1 + AND cp.is_active = 1 + "; + + $binds = [$ticket_id]; + $query = $this->db->query($sql, $binds); + + if ($query && $query->getNumRows() > 0) { + $row = $query->getRowArray(); + return json_encode(['policy_terms' => $row['policy_terms']]); + } + + return json_encode(['policy_terms' => null]); + } + + + + } diff --git a/app/Views/claim_files_upload.php b/app/Views/claim_files_upload.php new file mode 100644 index 00000000..8fa2ad4c --- /dev/null +++ b/app/Views/claim_files_upload.php @@ -0,0 +1,329 @@ + +
+
+
+
+
+
+ + + +
+
+
+
+ + + +
+ +
+ +
+ +
+ +
+
+
+
+
+ +
+
+
+ +
+
+
+
+

File List

+
+ +
+
+ + + + + + + + + + + +
S.NoDocs NameFile NameAction
+
+
+
+
+
+
+ + + + + + + + + diff --git a/app/Views/ticket_edit_onbording.php b/app/Views/ticket_edit_onbording.php index 14e4a66f..c84a7206 100644 --- a/app/Views/ticket_edit_onbording.php +++ b/app/Views/ticket_edit_onbording.php @@ -56,6 +56,20 @@ Auto Query Content + + @@ -82,6 +96,12 @@
+
+ +
+
+ +
diff --git a/app/Views/ticket_list.php b/app/Views/ticket_list.php index b81836f1..15198800 100644 --- a/app/Views/ticket_list.php +++ b/app/Views/ticket_list.php @@ -109,7 +109,12 @@ table.dataTable tbody td { TAT + + + ACTION + + @@ -217,16 +222,21 @@ table.dataTable tbody td { - -