EVOLUTION-NINJA
Edit File: Access_controll.php
<?php namespace App\Controllers; use App\Models\Gss_model; use App\Models\Branch_model; use CodeIgniter\I18n\Time; class Access_controll extends BaseController { public function __construct() { $this->db = \Config\Database::connect(); } public function access_id() { $gss_model = new Gss_model(); $id=session()->get('admin_id'); $table='gss_login'; $where=array('user_id'=>$id); $d=$gss_model->get_where_row($table,$where); return $d->user_type_id; } public function access_details() { $gss_model = new Gss_model(); $id=session()->get('admin_id'); $table='gss_login'; $where=array('user_id'=>$id); $d=$gss_model->get_where_row($table,$where); $data['user_type_id']=$d->user_type_id; $table='gss_access_controls'; $where=array('department_id'=>$data['user_type_id']); return $gss_model->get_where_result($table,$where); } public function access_controls() { $gss_model = new Gss_model(); $admin_id = session()->get('admin_id'); if($admin_id) { $user_type_table = 'gss_user_type'; $where = array('delete_status'=>'ACTIVE','user_type_id !='=>1); $data['user_types'] = $gss_model->get_where_result($user_type_table,$where); $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); return view('admin/access_controls',$data); } else { redirect('/'); } } public function get_all_controls() { $db = \Config\Database::connect(); // Connect to Database $result = $db->table('gss_login A') ->select('*') ->join('gss_user_type B', 'B.user_type_id = A.user_type_id') ->where('A.user_type_id !=', '1') ->where('A.delete_status', 'ACTIVE') ->orderBy('A.user_id', 'DESC') ->get() ->getResult(); // Fetch results return $this->response->setJSON($result ?: ['result' => 0]); // Return JSON } public function add_access() { $session = session(); $admin_id = $session->get('admin_id'); if ($admin_id) { $data['menu'] = $this->get_all_menu(); $data['departments'] = $this->get_all_departments(); $data['user_type_id'] = $this->access_id(); $data['access'] = $this->access_details(); // Fetch roles where user_type_id = 20 $data['roles'] = $this->db->table('gss_login') ->where(['delete_status' => 'ACTIVE', 'user_type_id' => '20']) ->get() ->getResult(); return view('admin/add_access', $data); } else { return redirect()->to('/'); } } public function get_all_menu() { $builder = $this->db->table('gss_menu') ->select('*') ->where(['parent_id' => '0', 'delete_status' => 'ACTIVE']); $result = $builder->get()->getResult(); $array = []; foreach ($result as $val) { $data = [ 'menu_id' => $val->menu_id, 'menu_name' => $val->menu_name, 'parent_id' => $val->parent_id ]; // Fetch submenus $subMenu = $this->db->table('gss_menu') ->select('*') ->where(['delete_status' => 'ACTIVE']) ->where('parent_id !=', '0') ->where('parent_id', $val->menu_id) ->get() ->getResult(); $data['sub_menu'] = !empty($subMenu) ? $subMenu : []; $array[] = $data; } return $array; } public function get_all_departments() { return $this->db->table('gss_user_type') ->select('*') ->where('delete_status', 'ACTIVE') ->get() ->getResult(); } public function single_department_access() { $department_id = $this->request->getPost('department_id'); if (!$department_id) { return $this->response->setJSON(['result' => 0, 'message' => 'Department ID is required']); } $db = \Config\Database::connect(); $builder = $db->table('gss_access_controls'); // Fetch department access where delete_status is ACTIVE $result = $builder->where(['delete_status' => 'ACTIVE', 'department_id' => $department_id]) ->get() ->getRow(); if ($result) { // Unserialize stored array values $access = unserialize($result->menu_id); $insert_id = unserialize($result->insert_id); $edit_id = unserialize($result->edit_id); $preview_id = unserialize($result->preview_id); $delete_id = unserialize($result->delete_id); if ($access) { return $this->response->setJSON([ 'access' => $access, 'insert_id' => $insert_id, 'edit_id' => $edit_id, 'preview_id' => $preview_id, 'delete_id' => $delete_id, 'result' => 1 ]); } } return $this->response->setJSON(['result' => 0]); } public function add_access_controls() { $db = \Config\Database::connect(); $builder = $db->table('gss_login'); // Get POST data $account_type = $this->request->getPost('account_type'); $username = $this->request->getPost('username'); $email = $this->request->getPost('email'); $password = $this->request->getPost('password'); $mail_password = $this->request->getPost('mail_password'); $signature = $this->request->getPost('signature'); $roles = $this->request->getPost('roles'); $executive_id = $this->request->getPost('executive_id'); $land_owner_id = $this->request->getPost('land_owner_id'); $existing_user = $builder->where(['email' => $email, 'delete_status' => 'ACTIVE'])->get()->getRow(); if ($existing_user) { return $this->response->setJSON(['result' => 2, 'message' => "Email already exists"]); } // Prepare data $data = [ 'user_type_id' => $account_type, 'email' => $email, 'username' => $username, 'password' => $password, // Secure password 'mail_password' => $mail_password, 'signature' => $signature, 'roles' => $roles, 'delete_status' => 'ACTIVE', 'created_at' => date('Y-m-d H:i:s', time()), // Set current timestamp ]; if (!empty($executive_id)) { $data['executive_id'] = $executive_id; } if (!empty($land_owner_id)) { $data['land_owner_id'] = $land_owner_id; } if ($builder->insert($data)) { return $this->response->setJSON(['result' => 1, 'message' => "Credentials added successfully"]); } else { return $this->response->setJSON(['result' => 0, 'message' => "Something went wrong.. try again"]); } } public function get_executives_list() { $department = $this->request->getGet('department'); if (!empty($department)) { $department = 'Executives'; } $db = \Config\Database::connect(); $builder = $db->table('gss_brokers'); $result = $builder->where(['type' => $department, 'delete_status' => 'ACTIVE']) ->get() ->getResult(); if ($result) { return $this->response->setJSON(['result' => 1, 'data' => $result]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No Data Found']); } } public function get_landowners_list() { $db = \Config\Database::connect(); $builder = $db->table('gss_land_owners'); $result = $builder->where('delete_status', 'ACTIVE') ->orderBy('name', 'ASC') ->get() ->getResult(); return $this->response->setJSON([ 'result' => $result ? 1 : 0, 'data' => $result ?: [], 'message' => $result ? '' : 'No Data Found' ]); } public function edit_access_control() { $db = \Config\Database::connect(); $user_id = $this->request->getPost('user_id'); $builder = $db->table('gss_login'); $result = $builder->where('user_id', $user_id) ->where('delete_status', 'ACTIVE') ->get() ->getRow(); // Fetch a single row if ($result) { return $this->response->setJSON(['user_details' => $result, 'result' => 1]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No Data Found']); } } public function update_bank_details() { $db = \Config\Database::connect(); $request = service('request'); $id = $request->getPost('edit_id'); $data = [ 'holder_name' => $request->getPost('acc_holder_update'), 'holder_address' => $request->getPost('acc_holder_address_update'), 'bank_name' => $request->getPost('acc_name_holder_update'), 'acc_no' => $request->getPost('acc_no_update'), 'pan_no' => $request->getPost('pan_no_update'), 'gst_no' => $request->getPost('gst_no_update'), 'ifsc' => $request->getPost('ifsc_update'), 'bank_branch' => $request->getPost('branch_name_update'), 'bank_address' => $request->getPost('address_update'), 'modified_at' => date('Y-m-d H:i:s', time()), // CI4 recommended format 'delete_status' => 'ACTIVE' ]; $builder = $db->table('gss_bank_details'); $builder->where('id', $id); $builder->update($data); if ($db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => 'Updated successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No changes made or update failed']); } } public function add_menu_access() { $department_id = $this->request->getPost('department_id'); $menu_id = $this->request->getPost('menu_id'); $role_id = $this->request->getPost('role'); $date = new \DateTime('now', new \DateTimeZone('Asia/Kolkata')); $created_at = $date->format('Y-m-d H:i:s'); $menu_array = []; $edit_array = []; $preview_array = []; $delete_array = []; foreach ($menu_id as $val) { $menu_array[] = $val; $edit_array[] = $this->request->getPost('edit_id_' . $val) ? 1 : 0; $preview_array[] = $this->request->getPost('preview_id_' . $val) ? 1 : 0; $delete_array[] = $this->request->getPost('delete_id_' . $val) ? 1 : 0; } $data = [ 'menu_id' => serialize($menu_array), 'role_id' => $role_id, 'edit_id' => serialize($edit_array), 'preview_id' => serialize($preview_array), 'delete_id' => serialize($delete_array), 'department_id' => $department_id, 'delete_status' => 'ACTIVE', 'created_at' => $created_at ]; $builder = $this->db->table('gss_access_controls'); $existing = $builder->where(['department_id' => $department_id, 'delete_status' => 'ACTIVE'])->get()->getRow(); if ($existing) { $update = $builder->where('access_id', $existing->access_id)->update($data); if ($update) { return $this->response->setJSON(['result' => 1, 'message' => 'Access controls updated successfully']); } else { return $this->response->setJSON(['result' => 0]); } } else { $insert = $builder->insert($data); if ($insert) { return $this->response->setJSON(['result' => 1, 'message' => 'Access controls added successfully']); } else { return $this->response->setJSON(['result' => 0, 'message' => 'Something went wrong.. try again']); } } } public function update_access() { $db = \Config\Database::connect(); $request = service('request'); $user_id = $request->getPost('user_id'); $account_type = $request->getPost('type'); $username = $request->getPost('username'); $email = $request->getPost('email'); $password = $request->getPost('password'); $mail_password = $request->getPost('mail_password'); $signature = $request->getPost('edit_signature'); $roles = $request->getPost('edit_roles'); $date = new \DateTime('now', new \DateTimeZone('Asia/Kolkata')); $updated_at = $date->format('Y-m-d H:i:s'); $data = [ 'user_type_id' => $account_type, 'email' => $email, 'username' => $username, 'password' => $password, 'mail_password' => $mail_password, 'signature' => $signature, 'roles' => $roles, 'delete_status' => 'ACTIVE', 'updated_at' => $updated_at ]; $executive_id = $request->getPost('executive_id'); if (!empty($executive_id)) { $data['executive_id'] = $executive_id; } $land_owner_id = $request->getPost('land_owner_id'); if (!empty($land_owner_id)) { $data['land_owner_id'] = $land_owner_id; } // Get existing user data $user = $db->table('gss_login') ->where('user_id', $user_id) ->get() ->getRow(); if (!$user) { return $this->response->setJSON(['result' => 0, 'message' => "User not found"]); } $existing_email = $user->email; // Check if the new email already exists in another active user $existing_emails = $db->table('gss_login') ->select('email') ->where('delete_status', 'ACTIVE') ->where('email !=', $existing_email) ->get() ->getResult(); $email_list = array_column($existing_emails, 'email'); if (in_array($email, $email_list)) { return $this->response->setJSON(['result' => 2, 'message' => "Email already exists"]); } else { $db->table('gss_login') ->where('user_id', $user_id) ->update($data); if ($db->affectedRows() > 0) { return $this->response->setJSON(['result' => 1, 'message' => "Credentials updated successfully"]); } else { return $this->response->setJSON(['result' => 0, 'message' => "Something went wrong.. try again"]); } } } }?>