myLogger = \Config\Services::mylogger(); $this->userModel = new UserModel(); $this->roleModel = new RoleModel(); $this->teamModel = new TeamModel(); $this->userTeamsModel = new UserTeamsModel(); } public function list() { $data['headerData'] = 'User List'; $this->myLogger->logme('error','User list function called'); $data['UserList'] = $this->userModel->getUserList(); // echo '
';
        // print_r($data); die;
        $data['roleData'] = $this->roleModel->select('id, role')->findAll();
        $data['teamData'] = $this->teamModel->select('id, name')->findAll();
        $this->loadLayout('UserList', $data);
    }


    public function create()
    {    
        $this->myLogger->logme('error','User create function called');
         $teams = $this->request->getPost('team'); 
         
        //if this is get method return to user creation page
        if(!$this->request->getPost()){
            return redirect()->to(base_url('/user/list'));
        }else{
    
            $userData = $this->request->getPost();
            $userData['created_by'] =  get_session_userid();
            $temp_team = $userData['team'];
            unset($userData['team']);
            $insert = $this->userModel->insert($userData);
            if($insert){
                $db = \Config\Database::connect();
                $tableName = 'hdz_staff'; 

                if($userData['role'] == 1){
                    $admin = 1;
                }else{
                    $admin = 0;
                }
                foreach ($temp_team as $key => $value) {
                    $team = $this->teamModel->where('id' , $value)->first();
                    if($team['name'] == 'Claims'){
                        $hdz_staff = [
                            'emp_code' => $userData['emp_code'],
                            'fullname' => $userData['first_name'],
                            'username' => strtolower($userData['first_name']),
                            'email' => $userData['email'],
                            'admin' => $admin,
                            'registration' => time(),
                        ];
        
                        $db->table($tableName)->insert($hdz_staff);
                    }
                } 

               $teamData['user_id'] = $insert ;
               foreach ($teams as $value) {
                    $teamData['team_id'] = $value;
                    $teamData['created_by'] =  get_session_userid();
                    $this->userTeamsModel->insert($teamData);
                }
            }
        }
        $this->myLogger->logme('error','User create Successfully created by id {data}', ['data' =>  get_session_userid()]);
        return redirect()->to(base_url('/user/list'));
    }

    public function getuser($id = null)
    {
        $userTeamData = $this->userTeamsModel->where('user_id', $id)->findAll();
        $data         = $this->userModel->getUserById($id);
        if($data){
           echo json_encode(array("status" => true , 'data' => $data, 'userTeamData' => $userTeamData));
        }else{
            echo json_encode(array("status" => false));
        }
    }

    public function edit()
    {   
        $teams = $this->request->getPost('team'); 

        if(!$this->request->getPost()){
            return redirect()->to(base_url('/user/list'));
        }else{
            $id = $this->request->getPost('PrimaryKey');
            $userData = $this->request->getPost();

            // Update data in the 'users' table based on the $id
            $userData['updated_by'] =  get_session_userid();
            $update = $this->userModel->where('id', $id )->set($userData)->update();

            if($update){

                $db = \Config\Database::connect();
                $tableName = 'hdz_staff'; 

                if($userData['role'] == 1){
                    $admin = 1;
                }else{
                    $admin = 0;
                }

                foreach ($userData['team'] as $key => $value) {
                    if($value == 2){
                        $hdz_staff = [
                            'emp_code' => $userData['emp_code'],
                            'fullname' => $userData['first_name'],
                            'username' => strtolower($userData['first_name']),
                            'email' => $userData['email'],
                            'admin' => $admin,
                        ];
        

                        $db->table($tableName)->where('emp_code', $userData['emp_code'])
                                              ->where('email', $userData['email'])
                                              ->set($userData)
                                              ->update();
                    }
                } 


                $this->userTeamsModel->where('user_id', $id)->delete();
                if($teams){
                    $teamData['user_id'] = $id ;
                    foreach ($teams as $value) {
                         $teamData['team_id'] = $value;
                         $teamData['created_by'] =  get_session_userid();
                         $this->userTeamsModel->insert($teamData);
                     }
                }
             }
            return redirect()->to(base_url('/user/list'));
        }
        
    }

    public function deactive($id = null)
    {   
        $model = new UserModel();
        $deactive = $model->where('id', $id)->set(['is_active' => 0])->update();
        if($deactive)
        {
            // $db = \Config\Database::connect();
            // $tableName = 'hdz_staff'; 

            // $db->table($tableName)->insert($hdz_staff);
                 

           echo json_encode(array("status" => true));
        }else{
           echo json_encode(array("status" => false));
        }
    }

    public function getRolesAndTeams()
    {
        $roleData = $this->roleModel->select('id, role')->findAll();
        $teamData = $this->teamModel->select('id, name')->findAll();
        echo json_encode(array("status" => true , 'roleData' => $roleData, 'teamData' => $teamData,));
    }
}