= CONCAT(YEAR(NOW()) - IF(MONTH(NOW()) >= 1 AND MONTH(NOW()) <= 3, 1, 0), "-01-01")', 'users.created_at < CONCAT(YEAR(NOW()) + IF(MONTH(NOW()) >= 1 AND MONTH(NOW()) <= 3, 1, 0), "-01-01")' ]; if (!empty($session_role) && $session_role === "sadmin") { $this->logger->info("Users: Listing In Super-admin role ."); $where = ['users.isactive !=' => NULL]; }else if (!empty($session_role) && $session_role === "admin") { $this->logger->info("Users: Listing In admin role . BID = ".$session_bid); $where = ['users.business_id' => (int)$session_bid]; } else { $this->logger->info("Users: Listing In ".$session_role." role . BID = ".$session_bid); $where = ['users.business_id' => (int)$session_bid, 'users.isactive' => 1]; } // $where = array_merge($where, $default_financial_year_condition); $model = new UsersModel(); $model->setTable('users'); // $user_details = $model->where($where)->orderBy('user_id', 'DESC')->findAll(); $user_details = $model->select('users.*, business.title as org_name,business_branches.branch_name') ->join('business', 'business.business_id = users.business_id') ->join('business_branches', 'business_branches.id = users.branch_id','left') ->where($where)->orderBy('user_id', 'DESC')->findAll(); $this->logger->info("Users: Listing Count .".count($user_details)); $data['page_name'] = 'User Details'; $data['loged_user'] = $session_role; $data['details'] = $user_details; $this->render_page('user_list', $data); } ## To Load User Add/Update page public function user_page($id,$flag) { helper('session'); $session_role = get_user_role(); $session_bid = get_business_id(); $session_uid = get_logged_user_id(); $data['organzation_details'] = $this->organzation_details(); $data['dummy_flag'] = $flag; // for redirect purpose. if ($id === '0') { $this->logger->info("Users: In Add page"); $data['page_name'] = 'Add User'; $render_page_name = 'user_form'; $data['details'] = []; $data['branches'] = $this->getOrganizationBranches($session_bid); } else { $this->logger->info("Users: In Edit page"); $model = new UsersModel(); $model->setTable('users'); if (!empty($session_role)) { switch ($session_role) { case "sadmin": $where = ['users.user_id' => $id, 'users.isactive !=' => NULL]; $edit_user_details = $model->where($where)->first(); $render_page_name = 'user_form'; $data['page_name'] = 'Edit User'; // Fetch organization branches for the selected organization $data['branches'] = $this->getOrganizationBranches($edit_user_details['business_id']); break; case "admin": $where = ['users.user_id' => $id, 'users.isactive =' => 1]; $edit_user_details = $model->where($where)->first(); $render_page_name = 'user_form'; $data['page_name'] = 'Edit User'; $data['branches'] = $this->getOrganizationBranches($edit_user_details['business_id']); break; case "volunteer": $where = ['users.user_id' => $id, 'users.isactive =' => 1]; $edit_user_details = $model->where($where)->first(); if ($session_uid === $id && $session_role === "volunteer") { $data['page_name'] = 'Edit User'; $data['branches'] = $this->getOrganizationBranches($edit_user_details['business_id']); $render_page_name = 'user_form'; } else { $data['page_name'] = 'Page Not Found'; $render_page_name = 'pages_404'; } break; case "accounts": $where = ['users.user_id' => $id, 'users.isactive =' => 1]; $edit_user_details = $model->where($where)->first(); $render_page_name = 'user_form'; $data['page_name'] = 'Edit User'; $data['branches'] = $this->getOrganizationBranches($edit_user_details['business_id']); break; case "auditor": $where = ['users.user_id' => $id, 'users.isactive =' => 1]; $edit_user_details = $model->where($where)->first(); $render_page_name = 'user_form'; $data['page_name'] = 'Edit User'; $data['branches'] = $this->getOrganizationBranches($edit_user_details['business_id']); break; default: $data['page_name'] = 'Page Not Found'; $render_page_name = 'pages_404'; } } $data['details'] = $edit_user_details; } $data['session_uid']=$session_uid; $data['session_bid'] = $session_bid; $this->render_page($render_page_name, $data); } ## Add the getOrganizationBranches method public function getOrganizationBranches($businessId) { $db = db_connect(); $builder = $db->table('business_branches'); $branches = $builder->where(['business_id'=>$businessId,'isactive'=>1])->get()->getResultArray(); return $branches; } ## For SuperAdmin Role business Dropdown displayed on Userpage.otherwise Hidden fields public function organzation_details() { $model = new BusinessModel(); $model->setTable('business'); $organzation_details = $model->orderBy('business_id', 'DESC')->findAll(); // Fetch branches for all organizations $branchModel = new BusinessModel(); $branchModel->setTable('business_branches'); $branches = $branchModel->findAll(); // Add branches to each business foreach ($organzation_details as &$business) { $business['branches'] = array_filter($branches, function ($branch) use ($business) { return $branch['business_id'] == $business['business_id']; }); } return $organzation_details; } ## For inserting/updating details of user public function insert_users() { $this->logger->info("Users: Inserting/Updating Details"); try { ## Declarions helper('session'); $UsersModel = new UsersModel(); $session_uid = get_logged_user_id(); $session_bid = get_business_id(); $user_id = $this->request->getPost('user_id'); $business_id = $this->request->getPost('business_id')?$this->request->getPost('business_id'):$session_bid; $data = [ 'city' => $this->request->getPost('city'), 'state' => $this->request->getPost('state'), 'email' => $this->request->getPost('email'), 'postal_code' => $this->request->getPost('postal_code'), 'role' => $this->request->getPost('role'), 'first_name' => $this->request->getPost('first_name'), 'mobile_no' => $this->request->getPost('mobile_no'), 'address' => $this->request->getPost('address'), 'business_id' => $business_id, 'branch_id' => $this->request->getPost('branch_id') ?? $this->request->getPost('branch'), ]; if (empty($user_id)) { // It's an insert operation $password = $this->request->getVar('password'); $hash_password = password_hash($password, PASSWORD_DEFAULT); $data['isactive'] = 1; $data['password'] = $hash_password; $data['created_by'] = $session_uid; //print_r($data);die; // ($UsersModel->insert($data)) ? session()->setFlashdata('success', 'User has been added successfully.') // : session()->setFlashdata('error', 'User could not be added. Please try again.'); if ($UsersModel->insert($data)) { session()->setFlashdata('success', 'User has been added successfully.'); $this->logger->info("Users: has been added successfully. Inserted ID = ".$UsersModel->insertID()); } else { session()->setFlashdata('error', 'User could not be added. Please try again.'); $this->logger->error("Users: Err could not be added. Please try again."); } return redirect()->route('user_list'); } else { // It's an update operation $isactive = $this->request->getPost('isactive'); $data['updated_by'] = $session_uid; $data['isactive'] = ($isactive == 'on') ? 1 : 0; if($session_uid == $user_id && $data['isactive'] == 0){ throw new \Exception("Cant able to Update Because logged-In persons can't remove. Please Contact your Admin!...."); } if ($UsersModel->update($user_id, $data)) { session()->setFlashdata('success', 'User has been updated successfully.'); } } }catch (\Exception $e) { $this->logger->error("Users: Err Occur =" . $e->getMessage()); session()->setFlashdata('error', 'Message: ' . $e->getMessage()); } // Redirect back to the user_page function or any other appropriate page if($this->request->getPost('dummy_flag') == 1){ return redirect()->to(base_url("user_page/{$user_id}/1")); }else{ return redirect()->route('user_list'); } } ## For delete the user details (Which means inactive the details) public function delete_user($id) { helper('session'); $session_uid = get_logged_user_id(); try { // if($id == $session_uid){ // throw new \Exception("Your Not Logged-In, Can't able delete"); // } $model = new UsersModel(); $where = ['users.user_id' => $id, 'users.isactive =' => 1]; $existingUser = $model->where($where)->find($id); $this->logger->Info("Users: Going to Inactive ID = ".$id); if ($existingUser) { $data['isactive'] = 0; $data['updated_by'] = $session_uid; if ($model->update($id, $data)) { $this->logger->info("Users: has been Inactived successfully. Inactived ID = ".$id); return $this->response->setJSON(['status' => true, 'message' => "User Deactivated successfully."]); } else { $this->logger->error("Users: Not able to Inactive ID =".$id); throw new \Exception("Data Not able to Deleted"); } } else{ $this->logger->error("Users: Does Not Exist To Inactive, ID = ".$id); throw new \Exception("User Already Deleted"); } } catch(\Exception $e) { $this->logger->error("Users: Err Occur = ".$e->getMessage()); return $this->response->setJSON(['status' => false, 'message' => $e->getMessage()]); } } ## For delete user make as active user public function activate_user($user_id){ helper('session'); $session_uid = get_logged_user_id(); try { // if($user_id == $session_uid){ // throw new \Exception("Your Logged-In, Can't able delete"); // } $model = new UsersModel(); $where = ['users.user_id' => $user_id, 'users.isactive =' => 0]; $existingUser = $model->where($where)->find($user_id); $this->logger->Info("Users: Going to ActiveUser ID = ".$user_id); // print_r($existingUser);die; if ($existingUser) { $data['isactive'] = 1; $data['updated_by'] = $session_uid; if ($model->update($user_id, $data)) { session()->setFlashdata('success', 'User Activated successfully.'); $this->logger->info("Users: has been Actived successfully. Actived ID = ".$user_id); } else { $this->logger->error("Users: Not able to Active ID =".$user_id); throw new \Exception("Data Not able to Active"); } } else{ $this->logger->error("Users: Does Not Exist To Active, ID = ".$user_id); throw new \Exception("User Already Activated"); } }catch(\Exception $e) { $this->logger->error("Users: Err Occur = ".$e->getMessage()); session()->setFlashdata('error', 'Message: ' .$e->getMessage()); } return redirect()->route('user_list'); } ## Add a method to fetch organization branches based on the selected organization public function get_branches($business_id) { $model = new BusinessModel(); $model->setTable('business_branches'); $branches = $model->where('business_id', $business_id)->findAll(); return json_encode($branches); } }