add projet

This commit is contained in:
root
2026-03-05 12:29:37 -05:00
parent 8d1eef8ba8
commit 23b7db1107
9109 changed files with 1106501 additions and 73 deletions
+97
View File
@@ -0,0 +1,97 @@
<?php
namespace App\Models;
use App\Models\BaseModel;
class UserRole extends BaseModel
{
protected $table = 'user_roles';
protected $primaryKey = 'id';
protected $fillable = [
'user_id',
'role_id',
'created_at',
'updated_at',
'deleted_at',
'updated_by',
];
public $timestamps = true;
const CREATED_AT = 'created_at';
const UPDATED_AT = 'updated_at';
protected $deletedField = 'deleted_at';
/**
* ✅ Fetch all role names assigned to a specific user
*
* @param int $userId
* @return array Array of roles, e.g., [['name' => 'parent'], ['name' => 'teacher']]
*/
public function create()
{
$users = $this->db->table('users')
->select('users.*')
->join('user_roles', 'user_roles.user_id = users.id')
->join('roles', 'roles.id = user_roles.role_id')
->whereNotIn('roles.name', ['parent', 'teacher'])
->groupBy('users.id') // prevent duplicates if user has multiple roles
->get()
->getResultArray();
return view('expenses/create', ['users' => $users]);
}
/**
* 🔁 Deprecated: Use getAllRolesByUserId instead
* Get the first role name by user ID
*
* @param int $userId
* @return string|null
*/
public function getRolesByUserId(int $userId): array
{
$roles = $this->select('roles.name as role_name')
->join('roles', 'roles.id = user_roles.role_id')
->where('user_roles.user_id', $userId)
->get()
->getResultArray();
// Always return an array
return is_array($roles) ? $roles : [];
}
/**
* ✅ Insert or update a role assignment
*
* @param int $userId
* @param int $roleId
* @return bool|int
*/
public function updateOrInsertRole($userId, $roleId)
{
// Check if this exact (user_id, role_id) already exists
$exists = $this->where([
'user_id' => $userId,
'role_id' => $roleId
])->first();
if ($exists) {
// Already exists, nothing to do
return true;
}
// Otherwise, insert new user-role mapping
return $this->insert([
'user_id' => $userId,
'role_id' => $roleId,
'updated_by' => session()->get('user_id')
]);
}
}