<?php

namespace App\Models;

use CodeIgniter\Model;

class ModelUser extends Model
{
    protected $table = 'users'; // Nama tabel di database
    protected $primaryKey = 'user_id'; // Primary key tabel
    protected $allowedFields = ['firstname', 'nohape', 'email', 'password', 'level', 'foto', 'status', 'created_at', 'updated_at'];

    /**
     * Fungsi untuk mendapatkan semua data user
     *
     * @return array
     */
    // public function getAllData()
    // {
    //     return $this->orderBy('user_id', 'DESC')->findAll();
    // }

    public function getAllData($userLevel, $userEmail)
    {
        if ($userLevel === 'admin') {
            return $this->findAll(); // Admin melihat semua data
        } else {
            return $this->where('level', 'operator')->findAll(); // Operator hanya melihat data operator
        }
    }

    /**
     * Fungsi untuk mendapatkan data user berdasarkan user_id
     *
     * @param int $user_id
     * @return array|null
     */
    public function getDataById($user_id)
    {
        return $this->where('user_id', $user_id)->first();
    }

    /**
     * Fungsi untuk menambahkan data baru
     *
     * @param array $data
     * @return bool
     */
    public function tambahData($data)
    {
        return $this->insert($data);
    }

    /**
     * Fungsi untuk memperbarui data
     *
     * @param int $user_id
     * @param array $data
     * @return bool
     */
    public function updateData($user_id, $data)
    {
        return $this->update($user_id, $data);
    }

    /**
     * Fungsi untuk menghapus data
     *
     * @param int $user_id
     * @return bool
     */
    public function deleteData($user_id)
    {
        return $this->delete($user_id);
    }

    // Fungsi untuk mendapatkan data pengguna berdasarkan ID
    public function getProfil($user_id)
    {
        return $this->find($user_id);  // Mengambil data berdasarkan user_id
    }

    // Fungsi untuk memperbarui data profil pengguna
    public function updateProfil($user_id, $data)
    {
        // return $this->update($user_id, $data);  // Memperbarui data berdasarkan user_id
        return $this->db->table('users')->where('user_id', $user_id)->update($data);  // Memperbarui data berdasarkan user_id
    }
}
