logger->info("Users: Listing In admin role . BID = ".$session_bid); $where = ['users.business_id' => (int)$session_bid, 'users.isactive' => 1]; } else { $this->logger->info("Users: Listing In Super-admin role ."); $where = ['users.isactive !=' => NULL]; } $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') ->join('business', 'business.business_id = users.business_id') ->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; // echo '
';
        // print_r($data); die;
        $this->render_page('user_list', $data);
    }

    ## To Load User Add/Update page
    public function user_page($id)
    {
        helper('session');
        $session_role = get_user_role();
        $session_bid = get_business_id();
        $session_uid = get_logged_user_id();
        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 =' => 1];
                        $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];
                        $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;
        $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, '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()); } 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'); } }