Merge pull request #111 from chamikaJ/fix/admin-center-teams-role-change

Enhance team member role management and localization updates
This commit is contained in:
Chamika J
2025-05-07 13:49:46 +05:30
committed by GitHub
6 changed files with 40 additions and 13 deletions

View File

@@ -232,7 +232,11 @@ export default class AdminCenterController extends WorklenzControllerBase {
FROM team_member_info_view FROM team_member_info_view
WHERE team_member_info_view.team_member_id = tm.id), WHERE team_member_info_view.team_member_id = tm.id),
role_id, role_id,
r.name AS role_name r.name AS role_name,
EXISTS(SELECT email
FROM email_invitations
WHERE team_member_id = tm.id
AND email_invitations.team_id = tm.team_id) AS pending_invitation
FROM team_members tm FROM team_members tm
LEFT JOIN users u on tm.user_id = u.id LEFT JOIN users u on tm.user_id = u.id
LEFT JOIN roles r on tm.role_id = r.id LEFT JOIN roles r on tm.role_id = r.id

View File

@@ -29,5 +29,7 @@
"role": "Role", "role": "Role",
"owner": "Owner", "owner": "Owner",
"admin": "Admin", "admin": "Admin",
"member": "Member" "member": "Member",
"cannotChangeOwnerRole": "Owner role cannot be changed",
"pendingInvitation": "Pending invitation"
} }

View File

@@ -29,5 +29,7 @@
"role": "Rol", "role": "Rol",
"owner": "Propietario", "owner": "Propietario",
"admin": "Administrador", "admin": "Administrador",
"member": "Miembro" "member": "Miembro",
"cannotChangeOwnerRole": "El rol de Propietario no puede ser cambiado",
"pendingInvitation": "Invitación pendiente"
} }

View File

@@ -29,5 +29,7 @@
"role": "Rol", "role": "Rol",
"owner": "Propietario", "owner": "Propietario",
"admin": "Administrador", "admin": "Administrador",
"member": "Miembro" "member": "Miembro",
"cannotChangeOwnerRole": "A função de Proprietário não pode ser alterada",
"pendingInvitation": "Convite pendente"
} }

View File

@@ -10,6 +10,7 @@ import {
Table, Table,
TableProps, TableProps,
Typography, Typography,
Tooltip,
} from 'antd'; } from 'antd';
import React, { useState } from 'react'; import React, { useState } from 'react';
import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppDispatch } from '@/hooks/useAppDispatch';
@@ -22,8 +23,6 @@ import {
} from '@/types/admin-center/admin-center.types'; } from '@/types/admin-center/admin-center.types';
import SingleAvatar from '@/components/common/single-avatar/single-avatar'; import SingleAvatar from '@/components/common/single-avatar/single-avatar';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { API_BASE_URL } from '@/shared/constants';
import apiClient from '@/api/api-client';
interface SettingTeamDrawerProps { interface SettingTeamDrawerProps {
teamId: string; teamId: string;
@@ -126,15 +125,32 @@ const SettingTeamDrawer: React.FC<SettingTeamDrawerProps> = ({
} }
}; };
const isDisabled = record.role_name === 'Owner' || record.pending_invitation;
const tooltipTitle = record.role_name === 'Owner'
? t('cannotChangeOwnerRole')
: record.pending_invitation
? t('pendingInvitation')
: '';
const selectComponent = (
<Select
style={{ width: '150px', height: '32px' }}
options={roleOptions}
defaultValue={record.role_name || ''}
disabled={isDisabled}
onChange={handleRoleChange}
/>
);
return ( return (
<div> <div>
<Select {isDisabled ? (
style={{ width: '150px', height: '32px' }} <Tooltip title={tooltipTitle}>
options={roleOptions} {selectComponent}
defaultValue={record.role_name || ''} </Tooltip>
disabled={record.role_name === 'Owner'} ) : (
onChange={handleRoleChange} selectComponent
/> )}
</div> </div>
); );
}, },

View File

@@ -35,6 +35,7 @@ export interface IOrganizationTeamMember {
role_id?: string; role_id?: string;
role_name?: string; role_name?: string;
created_at?: string; created_at?: string;
pending_invitation?: boolean;
} }
export interface IOrganizationTeam { export interface IOrganizationTeam {