missions button

This commit is contained in:
alma 2025-05-06 08:54:59 +02:00
parent 5f84229fb0
commit 842c8b4a8a

View File

@ -182,13 +182,20 @@ export function MissionsAdminPanel() {
volontaires.includes(userId);
};
// Function to get user's role
// Function to get user's roles (can now have multiple)
const getUserRoles = (userId: string): UserRole[] => {
const roles: UserRole[] = [];
if (gardienDuTemps === userId) roles.push('temps');
if (gardienDeLaParole === userId) roles.push('parole');
if (gardienDeLaMemoire === userId) roles.push('memoire');
if (volontaires.includes(userId)) roles.push('volontaire');
return roles;
};
// For backwards compatibility with existing code
const getUserRole = (userId: string): UserRole | null => {
if (gardienDuTemps === userId) return 'temps';
if (gardienDeLaParole === userId) return 'parole';
if (gardienDeLaMemoire === userId) return 'memoire';
if (volontaires.includes(userId)) return 'volontaire';
return null;
const roles = getUserRoles(userId);
return roles.length > 0 ? roles[0] : null;
};
// Function to get role display name
@ -204,8 +211,11 @@ export function MissionsAdminPanel() {
// Function to assign a user to a specific guardian role
const assignGuardienRole = (userId: string, role: GuardienRole) => {
// Remove from any existing role first
removeUserFromAllRoles(userId);
// No longer removing user from existing roles to allow multiple roles
// Only remove from volunteers if they're currently a volunteer
if (volontaires.includes(userId)) {
setVolontaires(prev => prev.filter(id => id !== userId));
}
// Assign to new role
if (role === 'temps') {
@ -1151,15 +1161,20 @@ export function MissionsAdminPanel() {
{/* User role controls */}
{isUserAssigned(user.id) ? (
<div className="flex items-center">
<Badge
className={`px-2 py-1 mr-2 ${
getUserRole(user.id) === 'volontaire'
? 'bg-gray-100 text-gray-800 hover:bg-gray-200'
: 'bg-blue-100 text-blue-800 hover:bg-blue-200'
}`}
>
{getRoleDisplayName(getUserRole(user.id))}
</Badge>
<div className="flex flex-wrap gap-1 mr-2">
{getUserRoles(user.id).map((role) => (
<Badge
key={role}
className={`px-2 py-1 ${
role === 'volontaire'
? 'bg-gray-100 text-gray-800 hover:bg-gray-200'
: 'bg-blue-100 text-blue-800 hover:bg-blue-200'
}`}
>
{getRoleDisplayName(role)}
</Badge>
))}
</div>
<Button
variant="outline"
size="sm"
@ -1187,22 +1202,19 @@ export function MissionsAdminPanel() {
<DropdownMenuContent align="end" className="bg-white border border-gray-200">
<DropdownMenuItem
onClick={() => assignGuardienRole(user.id, 'temps')}
disabled={gardienDuTemps !== null}
className={`cursor-pointer ${gardienDuTemps !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
className="cursor-pointer"
>
Gardien du Temps
</DropdownMenuItem>
<DropdownMenuItem
onClick={() => assignGuardienRole(user.id, 'parole')}
disabled={gardienDeLaParole !== null}
className={`cursor-pointer ${gardienDeLaParole !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
className="cursor-pointer"
>
Gardien de la Parole
</DropdownMenuItem>
<DropdownMenuItem
onClick={() => assignGuardienRole(user.id, 'memoire')}
disabled={gardienDeLaMemoire !== null}
className={`cursor-pointer ${gardienDeLaMemoire !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
className="cursor-pointer"
>
Gardien de la Mémoire
</DropdownMenuItem>