diff --git a/app/Config/Routes.php b/app/Config/Routes.php index f8bed9c..cbb5b40 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -144,6 +144,7 @@ $routes->group("/client", ["filter" => "authMVC"], function ($routes) { $routes->group("others", ["filter" => "authMVC"], function ($routes) { $routes->post("create", "ClientController::createOtherTabContent"); + $routes->post('check-duplicate', 'ClientController::validateDuplicateByClientBranch'); }); }); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index f940717..d2eb167 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -151,6 +151,16 @@ class ClientController extends AdminController return $this->response->setJSON(['isDuplicate' => $isDuplicate]); } + public function validateDuplicateByClientBranch() + { + $value = $this->request->getPost('value'); + $clientId = $this->request->getPost('client_id'); + $branchId = $this->request->getPost('branch_id'); + $field = $this->request->getPost('field'); + $isDuplicate = $this->clientModel->isDuplicateByClientBranch($value, $field, $clientId, $branchId); + return $this->response->setJSON(['isDuplicate' => $isDuplicate]); + } + public function smapletest() { $headers = [ @@ -897,7 +907,29 @@ class ClientController extends AdminController } $data['created_by'] = get_session_userid(); + + // before updating check if post_branch_id is already existing in the current db + + if(isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + $existing_pre_branch = $this->clientBranchModel + ->where('post_branch_id',$data['post_branch_id']) + // ->where('id !=',$pre_branch_id) + ->where('is_active',1) + ->first(); + + if($existing_pre_branch) + { + return $this->respond([ + 'status' => false, + 'code' => 409, + 'message' => 'The branch is already mapped with another branch. Please check.', + ], 409); + } + } + $insert = $this->clientBranchModel->insert($data); + $pre_branch_id = $insert; if ($insert) { $level_contact_data = $this->request->getPost('level_contect_data'); @@ -905,6 +937,16 @@ class ClientController extends AdminController $this->saveLevelContacts($level_contact_data, $insert); } + if($pre_branch_id && isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + // need to update the client_branch in the pre + $result = $this->updatePostClientBranch($data['post_branch_id'],$pre_branch_id , "create"); + + log_message('error','Post client_branch update result for post_branch_id '.$data['post_branch_id'].' and pre_branch_id '.$pre_branch_id.' is '.json_encode($result)); + } + + + // if ($insert) { // for ($i = 0; $i < count($this->request->getPost('name')); $i++) { // // Prepare data to insert @@ -945,7 +987,11 @@ class ClientController extends AdminController $this->myLogger->logme('error', 'Client branch EDIT function called'); $id = $this->request->getPost('branch_id_primarykey'); $client_id = $this->request->getPost('client_id'); + $post_branch_id = $this->request->getPost('post_branch_id') ?? ""; + $data = $this->request->getPost(); + $data['post_branch_id'] = $post_branch_id; + $units = $this->request->getPost('units'); $emp_unit_count = 0; @@ -1004,7 +1050,44 @@ class ClientController extends AdminController } $data['updated_by'] = get_session_userid(); + + $pre_branch_id = $id; + + // before updating check if post_branch_id is already existing in the current db + + if(isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + $existing_pre_branch = $this->clientBranchModel + ->where('post_branch_id',$data['post_branch_id']) + ->where('id !=',$pre_branch_id) + ->where('is_active',1) + ->first(); + + if($existing_pre_branch) + { + return $this->respond([ + 'status' => false, + 'code' => 409, + 'message' => 'The branch is already mapped with another branch. Please check.', + ], 409); + } + } + + + $insert = $this->clientBranchModel->update($id, $data); + + + + if($pre_branch_id && isset($data['post_branch_id']) && !empty($data['post_branch_id'])) + { + // need to update the client_branch in the post + $result = $this->updatePostClientBranch($data['post_branch_id'],$pre_branch_id , "update"); + + log_message('error','Post client_branch update result for post_branch_id '.$data['post_branch_id'].' and pre_branch_id '.$pre_branch_id.' is '.json_encode($result)); + } + + $this->myLogger->logme('error', 'Client branch EDITED by {data}', ['data' => get_session_userid()]); if ($insert) { @@ -5229,6 +5312,29 @@ class ClientController extends AdminController } + public function updatePostClientBranch($post_branch_id,$pre_branch_id , $operation){ + + + + + $postDB = \Config\Database::connect('postDB'); + + if($operation != 'create'){ + + $builder = $postDB->table('client_branch'); + $builder->where('pre_branch_id', $pre_branch_id); + $builder->update(['pre_branch_id' => null]); + } + + $builder = $postDB->table('client_branch'); + $builder->where('id', $post_branch_id); + $builder->update(['pre_branch_id' => $pre_branch_id]); + + return true; + + } + + diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index feca6fd..564fc92 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -761,36 +761,45 @@ class EmployeeController extends AdminController } - public function empby_client_clientbranch($client_id, $branch_id) - { - - $results = $this->clientModel->select('employees.id as employee_id, employees.name as employee_name, - employees.relationship, employees.emp_code, - employees.emp_status, auth_history.user_type') - ->join('employees', $client_id .'= employees.client_id AND ' . $branch_id . '= employees.client_branch_id', 'left') - ->join('auth_history', 'employees.id = auth_history.user_id AND "employee" = auth_history.user_type', 'left') - ->where('employees.is_active', 1) - ->where('employees.emp_status !=', 'truncated') - ->groupBy('employees.id') - ->findAll(); - + public function empby_client_clientbranch($client_id, $branch_id, $client_policy_id) + { + + $results = $this->clientModel->select(' + employees.id as employee_id, + employees.name as employee_name, + employees.relationship, + employees.emp_code, + employees.emp_status, + auth_history.user_type + ') + ->join('employees', $client_id . '= employees.client_id AND ' . $branch_id . '= employees.client_branch_id', 'left') + ->join('employee_polices', 'employees.id = employee_polices.employee_id') + ->join('auth_history', 'employees.id = auth_history.user_id AND "employee" = auth_history.user_type', 'left') + ->where('employees.is_active', 1) + ->where('employees.emp_status !=', 'truncated') + ->where('employee_polices.client_policy_id', $client_policy_id) + ->where('employee_polices.is_active', 1) + ->where('employee_polices.status !=', 'truncated') + ->groupBy('employees.id') + ->findAll(); + $groupedData = []; $employeeId = ''; foreach ($results as $row) { - if($employeeId != $row['employee_id']){ + if ($employeeId != $row['employee_id']) { $employeeId = $row['employee_id']; - }else{ + } else { $employeeId = null; } - $employeeName = $row['employee_name'] ; - $employeeRelationship = $row['relationship'] ; - $employeeEmpCode = $row['emp_code'] ; + $employeeName = $row['employee_name']; + $employeeRelationship = $row['relationship']; + $employeeEmpCode = $row['emp_code']; $employeeEmpStatus = $row['emp_status']; $employeeUserType = $row['user_type']; - - + + // if ($employeeId !== null && $employeeRelationship == 'Self') { if ($employeeId !== null) { // Append employee info to the branch's employees list @@ -802,16 +811,16 @@ class EmployeeController extends AdminController 'emp_status' => $employeeEmpStatus, 'user_type' => $employeeUserType ]; - } $employeeId = $row['employee_id']; } - - - return json_encode($groupedData); - } - + // print_r($groupedData); die; + + return json_encode($groupedData); + } + + /** diff --git a/app/Models/ClientModel.php b/app/Models/ClientModel.php index cdd35ad..89c77d6 100755 --- a/app/Models/ClientModel.php +++ b/app/Models/ClientModel.php @@ -214,5 +214,19 @@ class ClientModel extends Model return $result; } + public function isDuplicateByClientBranch($value, $field, $clientId, $branchId) + { + $builder = $this->db->table('level_contacts lc') + ->select('lc.id') + ->join('client_branch cb', 'lc.ref_id = cb.id', 'left') + ->where('lc.'.$field, $value) + ->where('lc.contact_type', 'client') + ->where('cb.client_id', $clientId) + ->where('lc.ref_id', $branchId) + ->get(); + + return $builder->getNumRows() > 0 ? true : false; + } + } diff --git a/app/Views/client_branch.php b/app/Views/client_branch.php index eb14309..297451d 100755 --- a/app/Views/client_branch.php +++ b/app/Views/client_branch.php @@ -91,10 +91,14 @@ + + + + @@ -203,12 +207,12 @@