logger->info("Users: Listing In Super-admin role ."); $where = ['users.isactive !=' => NULL]; break; case "admin": $this->logger->info("Users: Listing In ".$session_role." role . BID = ".$session_bid); $where = ['users.business_id' => (int)$session_bid, 'users.isactive !=' => NULL,'LOWER(users.role) !='=>strtolower("online")]; break; case "manager": $this->logger->info("Users: Listing In ".$session_role." role . BID = ".$session_bid); $where = ['users.business_id' => $session_bid, 'users.isactive' => 1,'LOWER(users.role) !='=>strtolower("online") ]; break; default: $data['page_name'] = 'Page Not Found'; $where = []; $render_page_name = 'pages_404'; } if(!empty($where)){ $model = new UsersModel(); $model->setTable('users'); $user_details = $model->select('users.*,business.title as company_name')->where($where)->join('business', 'business.business_id = users.business_id','left')->orderBy('user_id', 'DESC')->findAll(); $this->logger->info("Users: Listing Count .".count($user_details)); $data['page_name'] = 'User Details'; $data['details'] = $user_details; $render_page_name = 'user_list'; } $data['session_role'] = $session_role; $this->render_page($render_page_name, $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['dummy_flag'] = $flag; // for redirect purpose. if ($id === '0') { $this->logger->info("Users: In Add page"); $data['page_name'] = 'Add User'; $business_details = $this->business_details(); $render_page_name = 'user_form'; $data['details'] = []; } else if ($id !== '0') { $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(); $business_details = $this->business_details(); $render_page_name = 'user_form'; $data['page_name'] = 'Edit User'; break; case "admin": $where = ['users.user_id' => $id, 'users.isactive !=' => NULL,'users.business_id' => $session_bid]; $edit_user_details = $model->where($where)->first(); $business_details = []; $render_page_name = 'user_form'; $data['page_name'] = 'Edit User'; break; case "manager": $where = ['users.user_id' => $id, 'users.isactive' => 1 ,'users.business_id' => $session_bid]; $edit_user_details = $model->where($where)->first(); $business_details = []; if($session_uid === $id && $session_role === "manager"){ $data['page_name'] = 'Edit User'; $render_page_name = 'user_form'; }else{ $data['page_name'] = 'Page Not Found'; $render_page_name = 'pages_404'; } break; default: $data['page_name'] = 'Page Not Found'; $render_page_name = 'pages_404'; } } $data['details'] = $edit_user_details; } $data['business_details'] = $business_details; $data['session_bid'] = $session_bid; $data['session_role'] = $session_role; $this->render_page($render_page_name, $data); } ## For SuperAdmin Role business Dropdown displayed on Userpage.otherwise Hidden fields public function business_details() { $model = new BusinessModel(); $model->setTable('business'); $business_details = $model->orderBy('business_id', 'DESC')->findAll(); return $business_details; } ## For inserting/updating details of user public function insert_users() { $this->logger->info("Users: Inserting/Updating Details"); try { ## CI validation rule for profile_picture $validationRule = [ 'profile_picture' => [ 'label' => 'Image File', 'rules' => 'uploaded[profile_picture]|is_image[profile_picture]|mime_in[profile_picture,image/jpg,image/jpeg,image/gif,image/png,image/webp]' ] ]; ## 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; $img_details = $this->request->getFile('profile_picture'); // Here I Have Image details ; $final_img_name = NULL;//Just flag $existing_img_name = $this->request->getPost('existing_profile_picture_name'); // HiddenField for if have any pic name means; $img_path = 'public/uploads/'; ##Step 1 : image details available if($img_details){ $this->logger->info("Users: image details avaiable"); ##Step 2 : i have image details .
if ($img_details->isValid()) { ##Step 3 : image Name.$new_img_name."
"; $new_img_name = $img_details->getName(); // before movement name $this->logger->info("Users: Image Name B4 Upload".$new_img_name); ##Step 4 : Validation Rule Apply here.if not throw the error"
"; if (!$this->validate($validationRule)) { if($new_img_name !== ''){ $error = $this->validator->getErrors(); // echo "Error : ".(string)$error."
"; $this->logger->error("Users: Err on image upload".$error['profile_picture']); throw new \Exception((string)$error['profile_picture']); } } ##Step 5 : Check Existing and New Image Name Same Or not same no use to move on target folder if($new_img_name !== $existing_img_name){ $this->logger->info("Users: Image Name are Differ".$new_img_name." & ".$existing_img_name); ## Step 6 : Different Image Name means removed on target folder using Unlink; if ($existing_img_name && is_file($img_path.$existing_img_name)) { $this->logger->info("Users: already Image Available on target Folder Path : ".$img_path.$existing_img_name." So, Deleted."); // echo "Deleted_file : ".(string)$img_path.$existing_img_name."
"; unlink($img_path.$existing_img_name); } ## Step 7 : Moved to target; $img_details->move($img_path, $new_img_name); $final_img_name = $img_details->getName(); // after movement name $this->logger->info("Users: Image Name After Upload".$final_img_name); }else{ $final_img_name = $existing_img_name; $this->logger->info("Users: Image Name are same".$new_img_name." & ".$existing_img_name." Can't Upload"); } } else{ ## Step 8 : Not a Vaild Image File so replace Existing file name; $final_img_name = $existing_img_name; $this->logger->info("Users: Not a Vaild Image File Nothing To Update/Upload"); // throw new \Exception("Not a Vaild Image File"); } } else{ ## Step 9 : Testing Purpose File Details Not Available. so i can't move it.; $this->logger->info("Users: Testing Purpose Image Details Not Available. so i can't move it."); $final_img_name = $existing_img_name; //throw new \Exception("Testing Purpose File Details Not Available so i can't move it if you have existing filee means save it or your choice"); } $data = [ 'profile_picture' => $final_img_name, 'city' => $this->request->getPost('city'), 'state' => $this->request->getPost('state'), 'email' => $this->request->getPost('email'), 'postal_code' => $this->request->getPost('postal_code'), 'country' => $this->request->getPost('country'), 'role' => $this->request->getPost('role'), 'first_name' => $this->request->getPost('first_name'), 'last_name' => $this->request->getPost('last_name'), 'mobile_no' => $this->request->getPost('mobile_no'), 'date_of_birth' => NULL, 'event_id' => $this->request->getPost('event_id'), 'address' => $this->request->getPost('address'), 'gender' => $this->request->getPost('gender'), 'business_id' => $business_id ]; 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."); } } 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.'); $this->logger->info("Users: has been updated successfully. Updated ID = ".$user_id); } else { session()->setFlashdata('error', 'User update failed. Please try again.'); $this->logger->error("Users: Err Failed to update ID =".$user_id); } } }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 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(!empty($existingUser['profile_picture']) && file_exists(FCPATH."public/uploads/".$existingUser['profile_picture'])){ unlink('public/uploads/'.$existingUser['profile_picture']); $data['profile_picture'] = NULL; } if ($model->update($id, $data)) { session()->setFlashdata('success', 'Deleted successfully.'); $this->logger->info("Users: has been Inactived successfully. Inactived ID = ".$id); } 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()); session()->setFlashdata('error', 'Message: ' .$e->getMessage()); } return redirect()->route('user_list'); } public function fetch_event_names() { $usersModel = new UsersModel(); $eventNames = $usersModel->getEventName(); return $this->response->setJSON(['eventNames' => $eventNames]); } }