diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index fad59045..e058330f 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -5256,12 +5256,20 @@ class EmpDataServiceController extends BaseController return ['status' => "Success", 'message' => "Policy transaction entry created successfully", 'data' => ['params' => $params, 'insert_id' => $insert_id]]; } catch (\Throwable $e) { + + $errorDetails = [ + 'error_message' => $e->getMessage(), + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'stack_trace' => $e->getTraceAsString(), + ]; + $this->myLogger->logme("error", "Exception occurred in makeEntryForBDSPolicyTransaction(): " . json_encode([ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ])); - return ['status' => "Error", 'message' => "An unexpected error occurred", 'data' => ['error' => $e]]; + return ['status' => "Error", 'message' => "An unexpected error occurred", 'data' => $errorDetails]; } } @@ -5420,11 +5428,11 @@ class EmpDataServiceController extends BaseController $policy_no = trim($params['policy_no']); // Base query - $policy_transaction_data = $this->policyTransactionModel->where('is_active', 1)->where('TRIM(policy_no)', $policy_no, false); + $policy_transaction_data = $this->policyTransactionModel->where('is_active', 1)->where('TRIM(policy_no)', $policy_no); // Add endorsement condition only if not inception if ($params['action_type'] !== "inception") { - $policy_transaction_data = $policy_transaction_data ->where('TRIM(endorsement_no)', trim($params['endorsement_no']), false); + $policy_transaction_data = $policy_transaction_data ->where('TRIM(endorsement_no)', trim($params['endorsement_no'])); } $policy_transaction_data = $policy_transaction_data->first(); diff --git a/app/Controllers/PolicyTransactionController.php b/app/Controllers/PolicyTransactionController.php index 9ee0c1c4..5058dea6 100644 --- a/app/Controllers/PolicyTransactionController.php +++ b/app/Controllers/PolicyTransactionController.php @@ -3763,7 +3763,7 @@ $data['page_name'] = "BDS Bulk File Upload"; $data['tab_name'] = "BDS File Upload"; - // $response = $this->insertBulkBdsData(['file_id' => 2]); + // $response = $this->insertBulkBdsData(['file_id' => 17]); // dd($response); @@ -4163,62 +4163,10 @@ $gst_amt = calculate_gst_amount($row) ?? null; - $vehicle_id = ''; - $client_id = ''; - foreach ($vehicle_data as $vehicles) { - if($vehicles['vehicle_no'] == $vehicle_number){ - $vehicle_id = $vehicles['id']; - $client_id = $vehicles['owner']; - } - } - - $second_stage_client_id = ''; - if(empty($vehicle_id) && empty($client_id)){ - foreach ($client_data as $clients) { - if($clients['email'] == $client_email){ - $second_stage_client_id = $clients['id']; - } - } - } - - if(empty($second_stage_client_id)){ - - $client_insert_data = [ - 'client_name' => $client_name, - 'short_name' => $client_name, - 'email' => $client_email, - 'entity_type_id' => 7, - 'client_type' => 2, - ]; - - $client_id = $this->clientModel->insert($client_insert_data); - - if($client_id){ - - // Pattern: 2 letters + 2 digits - // if (preg_match('/^([A-Z]{2})([0-9]{2})/i', $vehicle_number, $matches)) { - // $vehicle_state = strtoupper($matches[1]); // TN - // $vehicle_state_code = $matches[2]; // 10 - // } else { - // $vehicle_state = null; - // $vehicle_state_code = null; - // } - - // $matched_rto_id = ($m = array_values(array_filter($rto_master, fn($r) => strtoupper($r['rto_state']) === $vehicle_state && (int)$r['rto_code'] === (int)$vehicle_state_code)))[0]['id'] ?? null; - - $matched_rto_id = check_rto_data($row, $rto_master); - $vehicle_type_id = check_vehicle_type($row, $vehicle_type_data); - - $vehicle_insert_data = [ - 'vehicle_no' => $vehicle_number, - 'vehicle_type' => $vehicle_type_id['vehicle_type']['id'] ?? null, - 'owner' => $client_id, - 'rto_id' => $matched_rto_id['rto_data']['id'] ?? null, - ]; - - $vehicle_id = $this->vehicleModel->insert($vehicle_insert_data); - } - } + // get the client and vehicle id + $vehicle_and_client_ids = $this->getClientAndVehicleId($row, $vehicle_data, $client_data, $rto_master, $vehicle_type_data); + $vehicle_id = $vehicle_and_client_ids['vehicle_id'] ?? null; + $client_id = $vehicle_and_client_ids['client_id'] ?? null; $policy_transaction_data = [ @@ -4366,6 +4314,10 @@ $this->myLogger->logme("error", '{file_id} uploaded failed', ['file_id' => $file_id]); } else{ $result = count($pt_ids); + $status = 'success'; + $failure_reason = ((json_encode($result))); + $this->bdsDumpModel->where('id', $file_id)->set(['status' => $status, 'reason' => $failure_reason])->update(); + $this->myLogger->logme("error", '{file_id} uploaded success', ['file_id' => $file_id]); } return $result; @@ -4528,4 +4480,92 @@ echo view('errors/html/production'); } } + + public function getClientAndVehicleId($row, $vehicle_data, $client_data, $rto_master, $vehicle_type_data) + { + $vehicle_number = trim($row[2]); + $client_name = trim($row[5]); + $client_email = trim($row[6]); + + $vehicle_id = null; + $client_id = null; + + // ------------------------------------------- + // 1. First Stage: Check if vehicle already exists + // ------------------------------------------- + foreach ($vehicle_data as $v) { + if (strcasecmp(trim($v['vehicle_no']), $vehicle_number) === 0) { + $vehicle_id = $v['id']; + $client_id = $v['owner']; + break; + } + } + + // ------------------------------------------- + // 2. Second Stage: Vehicle not found -> check client by email + // ------------------------------------------- + $second_stage_client_id = null; + + if (empty($vehicle_id) && empty($client_id)) { + + foreach ($client_data as $c) { + if (strcasecmp(trim($c['email']), $client_email) === 0) { + $second_stage_client_id = $c['id']; + break; + } + } + + if (!empty($second_stage_client_id)) { + + // Existing client – Insert vehicle + $matched_rto_id = check_rto_data($row, $rto_master); + $vehicle_type_id = check_vehicle_type($row, $vehicle_type_data); + + $vehicle_insert = [ + 'vehicle_no' => $vehicle_number, + 'vehicle_type' => $vehicle_type_id['vehicle_type']['id'] ?? null, + 'owner' => $second_stage_client_id, + 'rto_id' => $matched_rto_id['rto_data']['id'] ?? null, + ]; + + $vehicle_id = $this->vehicleModel->insert($vehicle_insert); + $client_id = $second_stage_client_id; + } else { + + // ------------------------------------------- + // 3. Third Stage: No existing client → Insert new client then insert vehicle + // ------------------------------------------- + $client_insert = [ + 'client_name' => $client_name, + 'short_name' => $client_name, + 'email' => $client_email, + 'entity_type_id' => 7, + 'client_type' => 2, + ]; + + $client_id = $this->clientModel->insert($client_insert); + + if ($client_id) { + + $matched_rto_id = check_rto_data($row, $rto_master); + $vehicle_type_id = check_vehicle_type($row, $vehicle_type_data); + + $vehicle_insert = [ + 'vehicle_no' => $vehicle_number, + 'vehicle_type' => $vehicle_type_id['vehicle_type']['id'] ?? null, + 'owner' => $client_id, + 'rto_id' => $matched_rto_id['rto_data']['id'] ?? null, + ]; + + $vehicle_id = $this->vehicleModel->insert($vehicle_insert); + } + } + } + + return [ + 'client_id' => $client_id, + 'vehicle_id' => $vehicle_id, + ]; + } + } diff --git a/app/Views/bds_dump_file_list.php b/app/Views/bds_dump_file_list.php index 7fa6bf4d..2c243dcd 100644 --- a/app/Views/bds_dump_file_list.php +++ b/app/Views/bds_dump_file_list.php @@ -52,18 +52,17 @@