- Deleted the obsolete evaluations route to streamline the API. - Added User and UserFormData interfaces to admin-client for better user management. - Updated useUsersManagement hook to utilize adminClient for fetching and creating users, improving data handling. - Cleaned up unused imports and code for better maintainability.
109 lines
2.5 KiB
TypeScript
109 lines
2.5 KiB
TypeScript
import { BaseHttpClient } from "../base/http-client";
|
|
|
|
export interface Skill {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
icon: string;
|
|
categoryId: string;
|
|
category: string;
|
|
usageCount: number;
|
|
}
|
|
|
|
export interface Team {
|
|
id: string;
|
|
name: string;
|
|
direction: string;
|
|
memberCount: number;
|
|
}
|
|
|
|
export interface TeamMember {
|
|
id: string;
|
|
firstName: string;
|
|
lastName: string;
|
|
fullName: string;
|
|
joinedAt: string;
|
|
}
|
|
|
|
export interface UserFormData {
|
|
firstName: string;
|
|
lastName: string;
|
|
teamId: string;
|
|
}
|
|
|
|
export interface User {
|
|
uuid: string;
|
|
firstName: string;
|
|
lastName: string;
|
|
teamName?: string;
|
|
hasEvaluations: boolean;
|
|
}
|
|
|
|
export class AdminClient extends BaseHttpClient {
|
|
// Skills Management
|
|
async getSkills(): Promise<Skill[]> {
|
|
return await this.get<Skill[]>(`/admin/skills`);
|
|
}
|
|
|
|
async createSkill(
|
|
skillData: Omit<Skill, "id" | "usageCount">
|
|
): Promise<Skill> {
|
|
return await this.post<Skill>(`/admin/skills`, skillData);
|
|
}
|
|
|
|
async updateSkill(skillData: Skill): Promise<Skill> {
|
|
return await this.put<Skill>(`/admin/skills`, skillData);
|
|
}
|
|
|
|
async deleteSkill(skillId: string): Promise<void> {
|
|
await this.delete(`/admin/skills?id=${skillId}`);
|
|
}
|
|
|
|
// Teams Management
|
|
async getTeams(): Promise<Team[]> {
|
|
return await this.get<Team[]>(`/admin/teams`);
|
|
}
|
|
|
|
async createTeam(teamData: Omit<Team, "id" | "memberCount">): Promise<Team> {
|
|
return await this.post<Team>(`/admin/teams`, teamData);
|
|
}
|
|
|
|
async updateTeam(teamData: Team): Promise<Team> {
|
|
return await this.put<Team>(`/admin/teams`, teamData);
|
|
}
|
|
|
|
async deleteTeam(teamId: string): Promise<void> {
|
|
await this.delete(`/admin/teams?id=${teamId}`);
|
|
}
|
|
|
|
async deleteDirection(direction: string): Promise<void> {
|
|
await this.delete(
|
|
`/admin/teams?direction=${encodeURIComponent(direction)}`
|
|
);
|
|
}
|
|
|
|
// Team Members
|
|
async getTeamMembers(teamId: string): Promise<TeamMember[]> {
|
|
return await this.get<TeamMember[]>(`/admin/teams/${teamId}/members`);
|
|
}
|
|
|
|
async removeTeamMember(teamId: string, memberId: string): Promise<void> {
|
|
await this.delete(`/admin/teams/${teamId}/members`, {
|
|
memberId,
|
|
});
|
|
}
|
|
|
|
// User Management
|
|
async getUsers(): Promise<User[]> {
|
|
return await this.get<User[]>(`/admin/users`);
|
|
}
|
|
|
|
async createUser(userData: UserFormData): Promise<User> {
|
|
return await this.post<User>(`/admin/users`, userData);
|
|
}
|
|
|
|
async deleteUser(userId: string): Promise<void> {
|
|
await this.delete(`/admin/users/${userId}`);
|
|
}
|
|
}
|